public async Task <SupplierBlock> AddAdminBlock(SupplierBlockModel blockModel) { SupplierBlock block = new SupplierBlock(blockModel.CommercialRegistrationNo, blockModel.CommercialSupplierName, blockModel.ResolutionNumber, blockModel.BlockStatusId, 2, blockModel.AgencyCode, blockModel.BlockStartDate, blockModel.BlockEndDate, blockModel.Punishment, blockModel.BlockDetails, blockModel.AdminFileName, blockModel.AdminFileNetReferenceId, blockModel.SecretaryFileName, blockModel.SecretaryFileNetReferenceId, blockModel.AdminBlockReason, blockModel.SecretaryBlockReason, blockModel.SupplierTypeId, blockModel.OrganizationTypeId, blockModel.CommercialRegistrationNo, blockModel.CommercialRegistrationNo, false); string crNumber = blockModel.CommercialRegistrationNo; var supplier = await _supplierQueries.FindSupplierByCRNumber(crNumber); if (supplier == null) { Supplier supplierobj = new Supplier(crNumber, blockModel.CommercialSupplierName, await _notificationAppService.GetDefaultSettingByCr()); await _genericrepository.CreateAsync <Supplier>(supplierobj); } else { List <UserNotificationSetting> defaultNotificationSettings = await _notificationAppService.GetDefaultSettingByCr(); supplier.AddNotificationSettings(defaultNotificationSettings); _genericrepository.Update(supplier); } QueryResult <SupplierBlockModel> supplierBlock = await _blockQueries.FindBlockedUser(new BlockSearchCriteria { AgencyCode = block.AgencyCode, CommercialRegistrationNo = block.CommercialRegistrationNo, EnabledSearchByDate = blockModel.EnabledSearchByDate }); if (supplierBlock != null && supplierBlock.TotalCount > 0) { if (supplierBlock.Items.FirstOrDefault().BlockStatusId == (int)Enums.BlockStatus.NewAdmin || supplierBlock.Items.FirstOrDefault().BlockStatusId == (int)Enums.BlockStatus.NewSecretary || supplierBlock.Items.FirstOrDefault().BlockStatusId == (int)Enums.BlockStatus.ApprovedSecertary) { throw new BusinessRuleException(Resources.BlockResources.Messages.BlockPendingRequest); } else { throw new BusinessRuleException(Resources.BlockResources.ErrorMessages.AlreadyBlocked); } } Check.ArgumentNotNull(nameof(SupplierBlock), block); var res = await _genericrepository.CreateAsync(block); await _genericrepository.SaveAsync(); NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { blockModel.CommercialSupplierName }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { blockModel.CommercialSupplierName }, SMSArgs = new object[] { blockModel.CommercialSupplierName } }; if (blockModel.IsSecretaryNotify) { MainNotificationTemplateModel mainNotificationTemplateModelForManger = new MainNotificationTemplateModel(NotificationArguments, $"Block/ManagerBlockDetails?Id={Util.Encrypt(block.SupplierBlockId)}", NotificationEntityType.Block, blockModel.SupplierBlockId.ToString(), 0); await _notificationAppService.SendNotificationForUsersByRoleName(NotificationOperations.BlockManager.OperationsToBeApproved.ApproveBlockManager, RoleNames.MonafasatBlackListCommittee, mainNotificationTemplateModelForManger); } else { MainNotificationTemplateModel mainNotificationTemplateModelForSecretary = new MainNotificationTemplateModel(NotificationArguments, $"Block/SecretaryBlockDetails?Id={Util.Encrypt(block.SupplierBlockId)}", NotificationEntityType.Block, block.SupplierBlockId.ToString(), 0); await _notificationAppService.SendNotificationForUsersByRoleName(NotificationOperations.BlockMonafasatAdmin.OperationsRequest.SendRequestBlockFromMonafasatAdminToBlockSecrtary, RoleNames.MonafasatBlockListSecritary, mainNotificationTemplateModelForSecretary); } return(res); }
public async Task <bool> GetTenderOffersForOpening(int id) { List <Tender> tenders = await _tenderQueries.FindTendersToOpenOffers(0); var agencies = await _tenderQueries.FindAgenciesByAgencyCodes(tenders.Select(t => t.AgencyCode).Distinct().ToList()); int?agencyCategoryId = 0; foreach (var tender in tenders) { agencyCategoryId = agencies.Where(a => a.AgencyCode == tender.AgencyCode).FirstOrDefault().CategoryId; NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { tender.OffersOpeningDate.Value.ToShortDateString(), tender.ReferenceNumber }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { tender.OffersOpeningDate.Value.ToShortDateString(), tender.ReferenceNumber }, SMSArgs = new object[] { tender.OffersOpeningDate.Value.ToShortDateString(), tender.ReferenceNumber } }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArguments, $"Tender/OpenTenderOffers?tenderIdString={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), null, tender.OffersOpeningCommitteeId); await _notificationJobAppService.SendNotifications(NotificationOperations.OffersOppeningSecretary.OperationsOnTheTender.OffersWillOpenTomorrow, tender.AgencyCode, agencyCategoryId.Value, mainNotificationTemplateModel, Enums.UserRole.NewMonafasat_OffersOpeningSecretary.ToString(), (int)tender.OffersOpeningCommitteeId); tender.UpdateOfferOpeningNotificationStatus(); _genericCommandRepository.Update(tender); } if (tenders.Any()) { await _genericCommandRepository.SaveAsync(); } return(true); }
public async Task SendVROTenderOffersTechnicalCheckingToApproveAsync(string tenderIdString) { int tenderId = Util.Decrypt(tenderIdString); Check.ArgumentNotNullOrEmpty(nameof(tenderId), tenderId.ToString()); Tender tender = await _tenderQueries.FindTenderForOpenCheckStageByTenderId(tenderId); IsValidToSendVROTenderOffersTechnicalCheckingToApproveAsync(tender); tender.UpdateTenderStatus(Enums.TenderStatus.VROOffersTechnicalCheckingPending, "", _httpContextAccessor.HttpContext.User.UserId(), TenderActions.SendVROTenderOffersTechnicalCheckingToApproveAsync); await _tenderCommands.UpdateAsync(tender); NotificationArguments NotificationArgument = new NotificationArguments { BodyEmailArgs = new object[] { tender.TenderNumber }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { tender.TenderNumber }, SMSArgs = new object[] { tender.TenderNumber } }; MainNotificationTemplateModel mainNotificationTemplate = new MainNotificationTemplateModel( NotificationArgument, $"Tender/VROTenderChecking?tenderIdString={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), null, tender.VROCommitteeId); await _notificationAppService.SendNotificationForCommitteeUsers( NotificationOperations.VROCheckManager.OperationsOnTheTender.sendTechnicalEvaluationOfCompetitionToApprove, tender.VROCommitteeId, mainNotificationTemplate); }
public async Task Approve(int planningId, string verificationCode) { Check.ArgumentNotNullOrEmpty(nameof(planningId), planningId.ToString()); PrePlanning planning = await _prePlanningQueries.FindById(planningId); if (planning.StatusId != (int)Enums.PrePlanningStatus.Pending) { throw new UnHandledAccessException(); } await CheckForVerificationCode(planningId, verificationCode, (int)Enums.VerificationType.PrePlanning); planning.UpdateStatus(Enums.PrePlanningStatus.Approved, ""); NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { "", planning.ProjectName }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { planning.ProjectName }, SMSArgs = new object[] { "", planning.ProjectName } }; MainNotificationTemplateModel approveTender = new MainNotificationTemplateModel(NotificationArguments, $"PrePlanning/Details?id={Util.Encrypt(planning.PrePlanningId)}", NotificationEntityType.prePlanning, planning.PrePlanningId.ToString(), planning.BranchId); await _notificationAppService.SendNotificationForBranchUsers(NotificationOperations.PrePlaningEmployee.OperationsOnPrePlaning.ApprovePreplaning, planning.BranchId, approveTender); _genericCommandRepository.Update <PrePlanning>(planning); await _genericCommandRepository.SaveAsync(); }
public async Task ApproveEdit(int id, string verificationCode) { await _verification.CheckForVerificationCode(id, verificationCode, (int)Enums.VerificationType.MandatoryList); var entity = await _mandatoryListQueries.Find(id); var changeRequestEntity = entity.ApproveEdit(); var updatedEntity = _mapper.Map <MandatoryList>(changeRequestEntity); entity.Update(updatedEntity); NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { "", entity.DivisionNameAr, entity.DivisionCode }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { entity.DivisionNameAr, entity.DivisionCode }, SMSArgs = new object[] { entity.DivisionNameAr, entity.DivisionCode } }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArguments, $"MandatoryList/Details?id={Util.Encrypt(entity.Id)}", NotificationEntityType.MandatoryList, entity.Id.ToString()); await _notificationAppService.SendNotificationForUsersByRoleName(NotificationOperations.MandatoryListOfficer.MandatoryListProducts.ApproveUpdateMandatoryList, RoleNames.MandatoryListOfficer, mainNotificationTemplateModel); await _mandatoryListCommands.Update(entity); }
public async Task <SupplierBlock> ManagerRejectionReason(int supplierBlockId, string reason) { var block = FindSupplierBlockById(supplierBlockId); block.SetManagerRejectionReason(reason); SupplierBlock supplierBlock = await _blockCommands.UpdateAsync(block); if (supplierBlock != null) { NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { block.CommercialRegistrationNo, block.CommercialSupplierName }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { block.CommercialRegistrationNo, block.CommercialSupplierName }, SMSArgs = new object[] { block.CommercialRegistrationNo, block.CommercialSupplierName } }; MainNotificationTemplateModel mainNotificationTemplateModelForSecretary = new MainNotificationTemplateModel(NotificationArguments, $"Block/SecretaryBlockDetails?Id={Util.Encrypt(block.SupplierBlockId)}", NotificationEntityType.Block, block.SupplierBlockId.ToString(), 0); MainNotificationTemplateModel mainNotificationTemplateModelForMonafasatAdmin = new MainNotificationTemplateModel(NotificationArguments, $"Block/DetailsAsync?Id={Util.Encrypt(block.SupplierBlockId)}", NotificationEntityType.Block, block.SupplierBlockId.ToString(), 0); await _notificationAppService.SendNotificationForUsersByRoleName(NotificationOperations.BlockSecrtary.OperationsToBeApproved.sendRejectBlockToSecretary, RoleNames.MonafasatBlockListSecritary, mainNotificationTemplateModelForSecretary); if (!string.IsNullOrEmpty(block.AgencyCode)) { await _notificationAppService.SendNotificationForUsersByRoleNameAndAgency(NotificationOperations.BlockMonafasatAdmin.OperationsRequest.sendRejectBlockToMonafasatAdmin, RoleNames.MonafasatAdmin, mainNotificationTemplateModelForMonafasatAdmin, block.AgencyCode, block.Agency.CategoryId.Value, null); } } return(supplierBlock); }
public async Task Reject(int planningId, string rejectionReason) { Check.ArgumentNotNullOrEmpty(nameof(planningId), planningId.ToString()); PrePlanning planning = await _prePlanningQueries.FindById(planningId); if (rejectionReason.Length > 500) { throw new BusinessRuleException("سبب الرفض لا يمكن ان يزيد عن 500 حرف."); } if (planning.StatusId == (int)Enums.PrePlanningStatus.Approved && planning.IsDeleteRequested) { planning.SetDeActiveRequest(false); planning.SetDeleteRejectionReason(rejectionReason); } else if (planning.StatusId != (int)Enums.PrePlanningStatus.Pending) { throw new UnHandledAccessException(); } else { planning.UpdateStatus(Enums.PrePlanningStatus.Rejected, rejectionReason); } NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { "", planning.ProjectName, }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { planning.ProjectName }, SMSArgs = new object[] { planning.ProjectName } }; MainNotificationTemplateModel approveTender = new MainNotificationTemplateModel(NotificationArguments, $"PrePlanning/Details?id={Util.Encrypt(planning.PrePlanningId)}", NotificationEntityType.prePlanning, planning.PrePlanningId.ToString(), planning.BranchId); await _notificationAppService.SendNotificationForBranchUsers(NotificationOperations.PrePlaningEmployee.OperationsOnPrePlaning.RejectPreplaning, planning.BranchId, approveTender); _genericCommandRepository.Update <PrePlanning>(planning); await _genericCommandRepository.SaveAsync(); }
public async Task SendToApproveFromUnitSecretaryLevelTwoToUnitMangerAsync(string tenderIdString) { int tenderId = Util.Decrypt(tenderIdString); Tender tender = await _tenderQueries.FindTenderWithUnitHistoryById(tenderId); _tenderDomainService.IsValidToSendToApproveFromLevelToByUnitManager(tender); TenderUnitStatusesHistory tenderUnitStatusesHistory = new TenderUnitStatusesHistory(comment: "", tenderUnitStatusId: (int)Enums.TenderUnitStatus.WaitingManagerApprove, estimatedValue: tender.EstimatedValue); tender.TenderUnitStatusesHistories.Add(tenderUnitStatusesHistory); tender.SetUnitStatus(Enums.TenderUnitStatus.WaitingManagerApprove); #region [Send Notification] NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { tender.ReferenceNumber }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { tender.ReferenceNumber }, SMSArgs = new object[] { tender.ReferenceNumber } }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArguments, $"Tender/TenderDetailsForUnitSecretary?tenderIdString={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), tender.BranchId); await _notificationAppService.SendNotificationForCommitteeUsers(NotificationOperations.UnitManager.OperationsOnTheTender.sendToUnitManagerToApprove, null, mainNotificationTemplateModel); #endregion await _tenderCommands.UpdateAsync(tender); }
public async Task RejectTenderByUnitManagerAsync(string tenderIdString, string comment) { int tenderId = Util.Decrypt(tenderIdString); Tender tender = await _tenderQueries.FindTenderWithUnitHistoryById(tenderId); _tenderDomainService.IsValidToUpdateRejectTenderByUnitManager(tender, comment); TenderUnitStatusesHistory tenderUnitStatusesHistory = new TenderUnitStatusesHistory(comment: comment, tenderUnitStatusId: (int)Enums.TenderUnitStatus.RejectedByManager, estimatedValue: tender.EstimatedValue); tender.TenderUnitStatusesHistories.Add(tenderUnitStatusesHistory); tender.SetUnitStatus(Enums.TenderUnitStatus.RejectedByManager); tender.ResetUnitSecretaryAction(); #region [Send Notification] NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { tender.ReferenceNumber }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { tender.ReferenceNumber }, SMSArgs = new object[] { tender.ReferenceNumber } }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArguments, $"Tender/TenderDetailsForUnitSecretary?tenderIdString={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), tender.BranchId); if (tender.TenderUnitAssigns.OrderByDescending(a => a.TenderUnitAssignId).Last(a => a.IsCurrentlyAssigned).UnitSpecialistLevel == (int)UnitSpecialistLevel.UnitSpecialistLevelOne) { await _notificationAppService.SendNotificationForCommitteeUsers(NotificationOperations.UnitSecrtaryLevel1.OperationsOnTheTender.rejectTenderFromUnitManager, null, mainNotificationTemplateModel); } else { await _notificationAppService.SendNotificationForCommitteeUsers(NotificationOperations.UnitSecrtaryLevel2.OperationsOnTheTender.rejectTenderFromUnitManager, null, mainNotificationTemplateModel); } #endregion await _tenderCommands.UpdateAsync(tender); }
public async Task <bool> GetTenderOffersForChecking() { List <Tender> tenders = await _tenderQueries.FindTendersToCheckOffers(); foreach (var tender in tenders) { NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { tender.OffersCheckingDate.Value.ToShortDateString(), tender.ReferenceNumber }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { tender.OffersCheckingDate.Value.ToShortDateString(), tender.ReferenceNumber }, SMSArgs = new object[] { tender.OffersCheckingDate.Value.ToShortDateString(), tender.ReferenceNumber } }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArguments, // $"Tender/OpenTenderOffers/tenderIdString?={Util.Encrypt(tender.TenderId)}", $"Tender/OfferChecking/tenderIdString?={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), null, tender.DirectPurchaseCommitteeId); //to do await _notifayAppService.SendNotificationForCommitteeUsers(NotificationOperations.DirectPurchaseManager.OperationsOnTheTender.offersWillCheckingTomorrow, tender.DirectPurchaseCommitteeId, mainNotificationTemplateModel); tender.UpdateOfferCheckingNotificationStatus(); } if (tenders.Any()) { await _tenderCommands.UpdateTendersAsync(tenders); } return(true); }
public async Task ShoulSendNotificationByUserIdDirectPurchaseSuccess() { MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel() { TemplateName = "templatename", BranchId = 1, CommitteeId = 1, Link = "link", RecipientnName = "RecipientnName", Args = new NotificationArguments() { BodyEmailArgs = new object[] { "email" }, SMSArgs = new object[] { "sms" } } }; MoqUser(); MockDataForSendNotifications(); _idmProxy.Setup(i => i.GetEmployeeDetailsByRoleName(It.IsAny <string>())) .Returns(() => { return(Task.FromResult <List <EmployeeIntegrationModel> >(new BranchDefaults().GetEmployeesData())); }); await _sut.SendNotificationDirectByUserId(1, 1, mainNotificationTemplateModel); _notifayCommands.VerifyAll(); }
public async Task ShoulSendNotificationForBranchUsersSuccess(int branchid) { MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel() { TemplateName = "templatename", BranchId = 1, CommitteeId = 1, Link = "link", RecipientnName = "RecipientnName", Args = new NotificationArguments() { BodyEmailArgs = new object[] { "email" }, SMSArgs = new object[] { "sms" } } }; _branchQuery.Setup(m => m.GetAgencyCodeByBranchId(It.IsAny <int>())) .Returns(() => { return(Task.FromResult <GovAgency>(new AgencyDefaults().GetGovAgency())); }); MockDataForSendNotifications(); await _sut.SendNotificationForBranchUsers(1, branchid, mainNotificationTemplateModel); _notifayCommands.Verify(m => m.SaveChangesAsync(), Times.Once); }
public async Task <bool> GetTenderOffersForOpening(int id) { List <Tender> tenders = await _tenderQueries.FindTendersToOpenOffers(0); foreach (var tender in tenders) { NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { tender.OffersOpeningDate.Value.ToShortDateString(), tender.ReferenceNumber }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { tender.OffersOpeningDate.Value.ToShortDateString(), tender.ReferenceNumber }, SMSArgs = new object[] { tender.OffersOpeningDate.Value.ToShortDateString(), tender.ReferenceNumber } }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArguments, $"Tender/OpenTenderOffers/tenderIdString?={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), null, tender.OffersOpeningCommitteeId); await _notifayAppService.SendNotificationForCommitteeUsers(NotificationOperations.OffersOppeningSecretary.OperationsOnTheTender.OffersWillOpenTomorrow, tender.OffersOpeningCommitteeId, mainNotificationTemplateModel); tender.UpdateOfferOpeningNotificationStatus(); } if (tenders.Count() > 0) { await _tenderCommands.UpdateTendersAsync(tenders); } return(true); }
public async Task <SupplierBlock> ManagerApproval(int supplierBlockId, string verificationCode) { bool check = await _verification.CheckForVerificationCode(supplierBlockId, verificationCode, (int)Enums.VerificationType.Block); var block = FindSupplierBlockById(supplierBlockId); block.SetStatus((int)Enums.BlockStatus.ApprovedManager); if (check) { block.TotallyBlocked(); NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { block.CommercialRegistrationNo, block.CommercialSupplierName }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { block.CommercialRegistrationNo, block.CommercialSupplierName }, SMSArgs = new object[] { block.CommercialRegistrationNo, block.CommercialSupplierName } }; NotificationArguments NotificationArgumentsForSupplier = new NotificationArguments { BodyEmailArgs = new object[] { block.CommercialSupplierName, block.ResolutionNumber, block.BlockStartDate.Value.ToShortDateString() }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { block.CommercialSupplierName, block.ResolutionNumber, block.BlockStartDate.Value.ToShortDateString() }, SMSArgs = new object[] { block.CommercialSupplierName, block.ResolutionNumber, block.BlockStartDate.Value.ToShortDateString() } }; MainNotificationTemplateModel mainNotificationTemplateModelForSecretary = new MainNotificationTemplateModel(NotificationArguments, $"Block/SecretaryBlockDetails?Id={Util.Encrypt(block.SupplierBlockId)}", NotificationEntityType.Block, block.SupplierBlockId.ToString(), 0); MainNotificationTemplateModel mainNotificationTemplateModelForMonafasatAdmin = new MainNotificationTemplateModel(NotificationArguments, $"Block/DetailsAsync?Id={Util.Encrypt(block.SupplierBlockId)}", NotificationEntityType.Block, block.SupplierBlockId.ToString(), 0); MainNotificationTemplateModel mainNotificationTemplateModelForSupplier = new MainNotificationTemplateModel(NotificationArgumentsForSupplier, $"Block/BlockDetailsAsync?Id={Util.Encrypt(block.SupplierBlockId)}", NotificationEntityType.Block, block.SupplierBlockId.ToString(), 0); MainNotificationTemplateModel mainNotificationTemplateModelForAccountMangerSpecialist = new MainNotificationTemplateModel(NotificationArguments, $"Block/BlockDetailsAsync?Id={Util.Encrypt(block.SupplierBlockId)}", NotificationEntityType.Block, block.SupplierBlockId.ToString(), 0); if (!string.IsNullOrEmpty(block.AgencyCode)) { await _notificationAppService.SendNotificationForUsersByRoleNameAndAgency(NotificationOperations.BlockManager.OperationsToBeApproved.ApproveBlockFromManagerToMonafasatAdmin, RoleNames.MonafasatAdmin, mainNotificationTemplateModelForMonafasatAdmin, block.AgencyCode, block.Agency.CategoryId.Value, null); await _notificationAppService.SendNotificationForUsersByRoleName(NotificationOperations.BlockManager.OperationsToBeApproved.AppoveBlockFromMangerToAccountMangerSpecialist, RoleNames.AccountsManagementSpecialist, mainNotificationTemplateModelForAccountMangerSpecialist); } await _notificationAppService.SendNotificationForSuppliers(NotificationOperations.BlockManager.OperationsToBeApproved.sendApprovedManagerApprovedBlocked, new List <string> { block.CommercialRegistrationNo }, mainNotificationTemplateModelForSupplier); await _notificationAppService.SendNotificationForUsersByRoleName(NotificationOperations.BlockSecrtary.OperationsToBeApproved.ApproveBlockFromManagerToSecretary, RoleNames.MonafasatBlockListSecritary, mainNotificationTemplateModelForSecretary); } SupplierBlock supplierBlock = await _blockCommands.UpdateAsync(block); if (supplierBlock != null) { await _blockQueries.GetAgencyById(block.AgencyCode); } return(supplierBlock); }
public async Task <bool> GetTenderOffersForChecking() { List <Tender> tenders = await _tenderQueries.FindTendersToCheckOffers(); var agencies = await _tenderQueries.FindAgenciesByAgencyCodes(tenders.Select(t => t.AgencyCode).Distinct().ToList()); int?agencyCategoryId = 0; #region New Notification Per User var lowBudgetFlowTenders = tenders.Where(w => w.IsLowBudgetDirectPurchase == true && w.DirectPurchaseCommitteeId == null).ToList(); var directpurchaseMembers = lowBudgetFlowTenders.Any() ? lowBudgetFlowTenders.Select(d => d.DirectPurchaseMemberId).ToList() : new List <int?>(); var userProfiles = await _idmjobqueries.FindUsersProfileByIdAsync(directpurchaseMembers); await _notificationJobAppService.AddNotificationSettingByUserId(NotificationOperations.DirectPurchaseMember.OperationsOnTheTender.offersWillCheckingTomorrowPurchaseMember, userProfiles, (int)Enums.UserRole.CR_DirectPurchaseMember); #endregion foreach (var tender in tenders) { bool isLowBudgetFlow = tender.IsLowBudgetDirectPurchase.HasValue && tender.IsLowBudgetDirectPurchase.Value == true; agencyCategoryId = agencies.FirstOrDefault(a => a.AgencyCode == tender.AgencyCode).CategoryId; NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { tender.OffersCheckingDate.Value.ToShortDateString(), tender.ReferenceNumber }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { tender.OffersCheckingDate.Value.ToShortDateString(), tender.ReferenceNumber }, SMSArgs = new object[] { tender.OffersCheckingDate.Value.ToShortDateString(), tender.ReferenceNumber } }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArguments, // $"Tender/OpenTenderOffers/tenderIdString?={Util.Encrypt(tender.TenderId)}", $"Tender/CheckDirectPurchaseOffers/tenderIdString?={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), null, tender.DirectPurchaseCommitteeId); //to do if (isLowBudgetFlow) { var userprofile = userProfiles.FirstOrDefault(d => d.Id == tender.DirectPurchaseMemberId); await _notificationJobAppService.SendNotificationByUserId(NotificationOperations.DirectPurchaseMember.OperationsOnTheTender.offersWillCheckingTomorrowPurchaseMember, tender.DirectPurchaseMemberId.Value, userprofile.UserName, mainNotificationTemplateModel); } else { await _notificationJobAppService.SendNotifications(NotificationOperations.DirectPurchaseManager.OperationsOnTheTender.offersWillCheckingTomorrow, tender.AgencyCode, agencyCategoryId.Value, mainNotificationTemplateModel, Enums.UserRole.NewMonafasat_ManagerDirtectPurshasingCommittee.ToString(), (int)tender.DirectPurchaseCommitteeId); } tender.UpdateOfferCheckingNotificationStatus(); _genericCommandRepository.Update(tender); } if (tenders.Any()) { await _genericCommandRepository.SaveAsync(); } return(true); }
public async Task UpdateAllNegotiationWaitingSupplierResponse() { var allNegotiations = await _communicationRequestJobQueries.FindAllNegotiationWaitingSupplierResponse(); foreach (var NEG in allNegotiations) { var currentSupplier = NEG.NegotiationFirstStageSuppliers.FirstOrDefault(w => w.NegotiationSupplierStatusId == (int)Enums.enNegotiationSupplierStatus.PendeingSupplierReply); if (currentSupplier == null || DateTime.Now.Subtract(currentSupplier.PeriodStartDateTime.Value).TotalHours < NEG.SupplierReplyPeriodHours) { continue; } NEG.UpdateSupplierStatus(currentSupplier.Id, (int)Enums.enNegotiationSupplierStatus.NoReply, null); var _notInvitedSuppliers = NEG.NegotiationFirstStageSuppliers.Where(w => w.NegotiationSupplierStatusId == (int)Enums.enNegotiationSupplierStatus.NotSent).OrderBy(d => d.Offer.FinalPriceAfterDiscount).ToList(); var Next = _notInvitedSuppliers.FirstOrDefault(); if (Next != null) { Next.StartSupplierPeriodService(); var SuppliersCRs = Next.SupplierCR; var _offer = await _communicationRequestJobQueries.GetOfferById(Next.OfferId); var _tender = await _communicationRequestJobQueries.FindTenderByTenderId(_offer.TenderId); var _supplier = await _communicationRequestJobQueries.FindSupplierByCRNumber(_offer.CommericalRegisterNo); NotificationArguments NotificationArgumentsforSupplier = new NotificationArguments { BodyEmailArgs = new object[] { _supplier.SelectedCrName, _tender.TenderName }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { _supplier.SelectedCrName, _tender.TenderName }, SMSArgs = new object[] { _supplier.SelectedCrName, _tender.TenderName } }; MainNotificationTemplateModel mainNotificationTemplateModelforSupplier = new MainNotificationTemplateModel(NotificationArgumentsforSupplier, $"CommunicationRequest/SupplierNegotiation/{Util.Encrypt(_offer.TenderId)}/{Util.Encrypt(NEG.NegotiationId)}", NotificationEntityType.Tender, _offer.TenderId.ToString(), null, _tender.OffersCheckingCommitteeId); _communicationRequestJobQueries.UpdateNegotiationFirstStage(NEG); await _communicationRequestJobQueries.SaveChanges(); await _notificationJobAppService.SendNotificationForSuppliers(NotificationOperations.Supplier.AgencyCommunicationRequest.SendNegotiationToSupplier, new List <string> { SuppliersCRs }, mainNotificationTemplateModelforSupplier); } else { NEG.UpdateNegotiationFirstStageStatus((int)Enums.enNegotiationStatus.SupplierNotAgreed, ""); _communicationRequestJobQueries.UpdateNegotiationFirstStage(NEG); await _communicationRequestJobQueries.SaveChanges(); } } }
private async Task SendNotificationForUsers(QueryResult <EmployeeIntegrationModel> idmUsers, List <UserNotificationSetting> userNotificationSettings, MainNotificationTemplateModel mainNotificationTemplateModel) { try { string output = JsonConvert.SerializeObject(mainNotificationTemplateModel); MainNotificationTemplateModel mainView = JsonConvert.DeserializeObject <MainNotificationTemplateModel>(output); var userNotificationsModel = userNotificationSettings.Select(x => new UserNotificationSettingModel { UserId = x.UserProfileId.Value, Email = idmUsers.Items.Where(i => i.userId == x.User.Id).FirstOrDefault().email, Mobile = idmUsers.Items.Where(i => i.userId == x.User.Id).FirstOrDefault().mobileNumber }).ToList(); var entityKey = TempletKey(mainView.EntityValue, mainView.EntityType); bool IsNullEmailFirstArrgs = string.IsNullOrEmpty(Convert.ToString(mainView.Args.BodyEmailArgs[0])); bool IsNullSmsmFirstArrgs = string.IsNullOrEmpty(Convert.ToString(mainView.Args.SMSArgs[0])); NotificationEmail email; NotificationSMS sms; NotificationPanel panel; foreach (var setting in userNotificationSettings) { if (IsNullEmailFirstArrgs) { mainView.Args.BodyEmailArgs[0] = Convert.ToString(setting.User.FullName); } if (IsNullSmsmFirstArrgs) { mainView.Args.SMSArgs[0] = Convert.ToString(setting.User.FullName); } NotificationDataModel template = await BuildNotificationTemplate(userNotificationSettings.FirstOrDefault().IsArabic, userNotificationSettings.FirstOrDefault().NotificationCodeId, mainView.Args); if (setting.Email) { email = new NotificationEmail(setting.UserProfileId.Value, userNotificationsModel.FirstOrDefault(u => u.UserId == setting.UserProfileId.Value).Email, template.Email.Title, template.Email.Body, setting.Id, mainView.Link, entityKey); await _notifayCommands.AddNotifayWithOutSave(email); } if (setting.Sms) { sms = new NotificationSMS(setting.UserProfileId.Value, userNotificationsModel.FirstOrDefault(u => u.UserId == setting.UserProfileId.Value).Mobile, template.SMS.Body, setting.Id, mainView.Link, entityKey); await _notifayCommands.AddNotifayWithOutSave(sms); } panel = new NotificationPanel(setting.UserProfileId.Value, template.PanelMessage, template.PanelMessage, setting.Id, mainView.Link, mainView.BranchId, mainView.CommitteeId, entityKey); await _notifayCommands.AddNotifayWithOutSave(panel); } if (userNotificationSettings.Count > 0) { await _notifayCommands.SaveChangesAsync(); } } catch (Exception ex) { _logger.LogError(ex.ToString()); } }
public async Task SendNotificationByUserId(int notificationCodeId, int userId, string userName, MainNotificationTemplateModel mainNotificationTemplateModel) { string output = JsonConvert.SerializeObject(mainNotificationTemplateModel); MainNotificationTemplateModel mainView = JsonConvert.DeserializeObject <MainNotificationTemplateModel>(output); var userNotificationSetting = await _iNotificationQuerie.GetNotificationSettingByUserId(notificationCodeId, userId); var entityKey = TempletKey(mainView.EntityValue, mainView.EntityType); if (userNotificationSetting == null) { return; } var userDataFromIDM = await _idmProxy.GetUserbyUserName(userName); var userNotificationsModel = new UserNotificationSettingModel { UserId = userNotificationSetting.UserProfileId.Value, Email = userDataFromIDM != null ? userDataFromIDM.Email : userNotificationSetting.User.Email, Mobile = userDataFromIDM != null ? userDataFromIDM.PhoneNumber : userNotificationSetting.User.Mobile, }; bool IsNullEmailFirstArrgs = string.IsNullOrEmpty(Convert.ToString(mainView.Args.BodyEmailArgs[0])); bool IsNullSmsmFirstArrgs = string.IsNullOrEmpty(Convert.ToString(mainView.Args.SMSArgs[0])); if (IsNullEmailFirstArrgs) { mainView.Args.BodyEmailArgs[0] = Convert.ToString(userNotificationSetting.User.FullName); } if (IsNullSmsmFirstArrgs) { mainView.Args.SMSArgs[0] = Convert.ToString(userNotificationSetting.User.FullName); } NotificationDataModel template = await BuildNotificationTemplate(userNotificationSetting.IsArabic, userNotificationSetting.NotificationCodeId, mainView.Args); if (userNotificationSetting.Email) { var email = new NotificationEmail(userId, userNotificationsModel.Email, template.Email.Title, template.Email.Body, userNotificationSetting.Id, mainView.Link, entityKey); await _notifayCommands.AddNotifayWithOutSave(email); } if (userNotificationSetting.Sms) { var sms = new NotificationSMS(userNotificationSetting.UserProfileId.Value, userNotificationsModel.Mobile, template.SMS.Body, userNotificationSetting.Id, mainView.Link, entityKey); await _notifayCommands.AddNotifayWithOutSave(sms); } var panel = new NotificationPanel(userNotificationSetting.UserProfileId.Value, template.PanelMessage, template.PanelMessage, userNotificationSetting.Id, mainView.Link, mainView.BranchId, mainView.CommitteeId, entityKey); await _notifayCommands.AddNotifayWithOutSave(panel); await _notifayCommands.SaveChangesAsync(); }
private async Task SendNotificationAfterDeleteSupplierFromAnnoincementList(DeleteSupplierFromAnnouncementModel deleteModel, AnnouncementSupplierTemplate announcementList) { var announcementTemplateIdString = Util.Encrypt(announcementList.AnnouncementId); List <string> crs = new List <string> { deleteModel.CR }; MainNotificationTemplateModel templateModel; NotificationArguments NotificationArguments = new NotificationArguments(); NotificationArguments.BodyEmailArgs = new object[] { announcementList.ReferenceNumber }; NotificationArguments.SubjectEmailArgs = new object[] { }; NotificationArguments.PanelArgs = new object[] { announcementList.ReferenceNumber }; NotificationArguments.SMSArgs = new object[] { announcementList.ReferenceNumber }; templateModel = new MainNotificationTemplateModel(NotificationArguments, $"AnnouncementSuppliersTemplate/AnnouncementSuppliersTemplateDetailsForSuppliers?announcmentIdString={announcementTemplateIdString}", NotificationEntityType.Tender, announcementList.AnnouncementId.ToString(), 0); await _notificationAppService.SendNotificationForSuppliers(NotificationOperations.Supplier.OperationsOnTheTender.DeleteSupplierFromAnnouncementList, crs, templateModel); }
private async Task SendNotificationAfterExtendAnnouncementTemplate(ExtendAnnouncementSupplierTemplateModel extendAnnouncement) { var AcceptedSuppliers = await _announcementQueries.GetAcceptedAnnouncementSuppliers(extendAnnouncement.AnnouncementId); if (AcceptedSuppliers.Any()) { MainNotificationTemplateModel mainNotificationTemplateModelForSupplier; NotificationArguments NotificationArguments = new NotificationArguments(); NotificationArguments.BodyEmailArgs = new object[] { extendAnnouncement.ReferenceNumber, extendAnnouncement.TemplateExtendMechanism }; NotificationArguments.SubjectEmailArgs = new object[] { }; NotificationArguments.PanelArgs = new object[] { extendAnnouncement.ReferenceNumber }; NotificationArguments.SMSArgs = new object[] { extendAnnouncement.ReferenceNumber }; mainNotificationTemplateModelForSupplier = new MainNotificationTemplateModel(NotificationArguments, $"AnnouncementSuppliersTemplate/AnnouncementSuppliersTemplateDetailsForSuppliers?announcementIdString={Util.Encrypt(extendAnnouncement.AnnouncementId)}", NotificationEntityType.Announcement, extendAnnouncement.AnnouncementId.ToString(), 0); await _notificationAppService.SendNotificationForSuppliers(NotificationOperations.ExtendAnnouncementTemplate.OperationsOnExtendAnnouncement.SendNotificationToAcceptedSuppliers, AcceptedSuppliers, mainNotificationTemplateModelForSupplier); } }
public async Task ShoulSendNotificationByUserIdSuccess() { UserAPIModel userAPIModel = new UserAPIModel() { Email = "*****@*****.**", PhoneNumber = "0505050500" }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel() { TemplateName = "templatename", BranchId = 1, CommitteeId = 1, Link = "link", RecipientnName = "RecipientnName", Args = new NotificationArguments() { BodyEmailArgs = new object[] { "email" }, SMSArgs = new object[] { "sms" } } }; _iNotificationQuerie.Setup(q => q.GetNotificationSettingByUserId(It.IsAny <int>(), It.IsAny <int>())) .Returns(() => { return(Task.FromResult <UserNotificationSetting>(new NotificationsDefaults().GetUserNotificationSettingWithProfileId()[0])); }); _idmProxy.Setup(q => q.GetUserbyUserName(It.IsAny <string>())) .Returns(() => { return(Task.FromResult <UserAPIModel>(userAPIModel)); }); var entryMock = new Mock <ICacheEntry>(); _cache.Setup(m => m.CreateEntry(It.IsAny <object>())) .Returns(entryMock.Object); _iNotificationQuerie.Setup(q => q.FindAllNotificationOperationCode()) .Returns(() => { return(Task.FromResult <List <NotificationOperationCode> >(new NotificationsDefaults().GetNotificationOperationCode())); }); await _sut.SendNotificationByUserId(1, 1, "username", mainNotificationTemplateModel); _notifayCommands.Verify(m => m.SaveChangesAsync(), Times.Once); }
private async Task SendInvitationsToJoinCommitteeNotification(JoinTechnicalCommitteeModel joinModel, Tender tender) { var DetailsUrl = _rootConfiguration?.MonafasatURLConfiguration?.MonafasatURL; NotificationArguments NotificationArgument = new NotificationArguments(); NotificationArgument.BodyEmailArgs = new object[] { tender.TenderName, joinModel.CommitteeName, tender.ReferenceNumber, tender?.Agency?.NameArabic, tender?.Branch?.BranchName, tender?.LastEnqueriesDate, tender.LastOfferPresentationDate, tender.OffersOpeningDate, tender.OffersOpeningDate?.Hour, DetailsUrl + $"Tender/Details?STenderId={Util.Encrypt(tender.TenderId)}" }; NotificationArgument.SubjectEmailArgs = new object[] { }; NotificationArgument.PanelArgs = new object[] { tender.ReferenceNumber }; NotificationArgument.SMSArgs = new object[] { tender.ReferenceNumber }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArgument, $"Enquiry/EnquiryDetails?enquiryIdString={Util.Encrypt(joinModel.EnquiryId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), 0, joinModel.JoinedCommitteeId); await _notificationAppService.SendNotificationForCommitteeUsers(NotificationOperations.TechnicalCommitteeSecretary.InquiriesAboutTender.changetendergatid, joinModel.JoinedCommitteeId, mainNotificationTemplateModel); }
private async Task SendNotificationAfterApproveReply(EnquiryReply enquiryReply) { var tender = enquiryReply.Enquiry.Tender; List <string> crs = (tender.TenderTypeId == (int)Enums.TenderType.PreQualification || tender.TenderTypeId == (int)Enums.TenderType.PostQualification) ? await _iDMAppService.QualificationToSendInvitation(tender.TenderId) : await _iDMAppService.GetAllSupplierOnTender(tender.TenderId); NotificationArguments NotificationArgument = new NotificationArguments(); if (tender.TenderTypeId == (int)Enums.TenderType.PreQualification || tender.TenderTypeId == (int)Enums.TenderType.PostQualification) { NotificationArgument.BodyEmailArgs = new object[] { "", tender.TenderName, tender.ReferenceNumber, tender?.LastEnqueriesDate, tender?.LastOfferPresentationDate }; } else { NotificationArgument.BodyEmailArgs = new object[] { "", tender.TenderName, tender.ReferenceNumber, tender.Purpose, tender?.LastEnqueriesDate, tender?.LastOfferPresentationDate, tender.OffersOpeningDate, tender?.OffersOpeningDate?.Hour }; } NotificationArgument.SubjectEmailArgs = new object[] { }; NotificationArgument.PanelArgs = new object[] { tender.ReferenceNumber }; NotificationArgument.SMSArgs = new object[] { tender.ReferenceNumber }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArgument, $"Enquiry/SupplierEnquiriesOnTender?id={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), 0, tender.TechnicalOrganizationId); if (tender.TenderTypeId == (int)Enums.TenderType.PreQualification || tender.TenderTypeId == (int)Enums.TenderType.PostQualification) { await _notificationAppService.SendNotificationForSuppliers(NotificationOperations.Supplier.InquiriesAboutTender.publishfaqanswerforQualification, crs, mainNotificationTemplateModel); await _notificationAppService.SendNotificationForCommitteeUsers(NotificationOperations.TechnicalCommitteeSecretary.InquiriesAboutTender.PublishfaqanswerforQualification, tender.TechnicalOrganizationId, mainNotificationTemplateModel); } else { await _notificationAppService.SendNotificationForSuppliers(NotificationOperations.Supplier.InquiriesAboutTender.publishfaqanswer, crs, mainNotificationTemplateModel); await _notificationAppService.SendNotificationForCommitteeUsers(NotificationOperations.TechnicalCommitteeSecretary.InquiriesAboutTender.publishfaqanswerbackend, tender.TechnicalOrganizationId, mainNotificationTemplateModel); } enquiryReply.Enquiry.Tender.AddActionHistory(tender.TenderStatusId, TenderActions.ApproveFAQ, "", _httpContextAccessor.HttpContext.User.UserId()); var comunicationRequest = await _enquiryQueries.GetEnquiryReplyWithCommunicationRequest(enquiryReply.EnquiryReplyId); AgencyCommunicationRequest agencyCommunicationRequest = await _enquiryDomain.GetEnquiryCommunicationRequestByRequestId(comunicationRequest.Enquiry.AgencyCommunicationRequest.AgencyRequestId); if (agencyCommunicationRequest.StatusId == (int)Enums.AgencyCommunicationRequestStatus.PendingEnquiryForReply && enquiryReply.EnquiryReplyStatusId == (int)Enums.EnquiryReplyStatus.Approved) { agencyCommunicationRequest.UpdateAgencyCommunicationRequestStatus((int)Enums.AgencyCommunicationRequestStatus.ReplyOnEnquiry); await _enquiryDomain.UpdateCommunicationRequest(agencyCommunicationRequest); } }
public async Task SendNotificationDirectByUserId(int notificationCodeId, int userId, MainNotificationTemplateModel mainNotificationTemplateModel) { string output = JsonConvert.SerializeObject(mainNotificationTemplateModel); MainNotificationTemplateModel mainView = JsonConvert.DeserializeObject <MainNotificationTemplateModel>(output); var userNotificationSetting = await _iNotificationQuerie.GetNotificationSettingByUserId(notificationCodeId, userId); if (userNotificationSetting == null) { return; } var role = _httpContextAccessor.HttpContext.User.UserRole(); var idmUsers = await _idmProxy.GetEmployeeDetailsByRoleName(role); var userDataFromIDM = idmUsers.FirstOrDefault(s => s.userId == userId); var userNotificationsModel = new UserNotificationSettingModel { UserId = userNotificationSetting.UserProfileId.Value, Email = userDataFromIDM != null ? userDataFromIDM.email : userNotificationSetting.User.Email, Mobile = userDataFromIDM != null ? userDataFromIDM.mobileNumber : userNotificationSetting.User.Mobile, }; bool IsNullEmailFirstArrgs = string.IsNullOrEmpty(Convert.ToString(mainView.Args.BodyEmailArgs[0])); bool IsNullSmsmFirstArrgs = string.IsNullOrEmpty(Convert.ToString(mainView.Args.SMSArgs[0])); if (IsNullEmailFirstArrgs) { mainView.Args.BodyEmailArgs[0] = Convert.ToString(userNotificationSetting.User.FullName); } if (IsNullSmsmFirstArrgs) { mainView.Args.SMSArgs[0] = Convert.ToString(userNotificationSetting.User.FullName); } NotificationDataModel template = await BuildNotificationTemplate(userNotificationSetting.IsArabic, userNotificationSetting.NotificationCodeId, mainView.Args); if (userNotificationSetting.Email) { await SendOneEmail(new EmailModel { Body = template.Email.Body, Subject = template.Email.Title, To = new List <string> { userNotificationsModel.Email } }); } if (userNotificationSetting.Sms) { await SendOneSms(new SmsModel { Body = template.SMS.Body, To = new List <string> { userNotificationsModel.Mobile } }); } }
public async Task <AnnouncementTemplateMainDetailsModel> SendJoinRequestToAnnouncment(AnnouncementTemplateMainDetailsModel announcementModel) { var model = new AnnouncementTemplateMainDetailsModel(); var announcement = await _announcementQueries.GetAnnouncementWithJoinRequestsById(announcementModel.AnnouncementId); string cr = _httpContextAccessor.HttpContext.User.SupplierNumber(); await IsValidToAddJoinRequestToAnnouncementTemplate(announcement, cr); List <AnnouncementTemplateJoinRequestAttachment> attachments = new List <AnnouncementTemplateJoinRequestAttachment>(); if (announcementModel.Attachments.Count > 0) { foreach (var item in announcementModel.Attachments) { attachments.Add(new AnnouncementTemplateJoinRequestAttachment(item.Name, item.FileNetReferenceId)); } } announcement = announcement.AddJoinRequest(attachments, announcement.AnnouncementId, cr); MainNotificationTemplateModel mainNotificationTemplateModelForSupplier; NotificationArguments NotificationArguments = new NotificationArguments(); NotificationArguments.BodyEmailArgs = new object[] { announcement.ReferenceNumber }; NotificationArguments.SubjectEmailArgs = new object[] { }; NotificationArguments.PanelArgs = new object[] { announcement.ReferenceNumber }; NotificationArguments.SMSArgs = new object[] { announcement.ReferenceNumber }; UserProfile userProfile = await _iDMQueries.FindUserProfileByIdAsync(announcement.CreatedById.Value); var branchid = userProfile.BranchUsers.Where(u => u.UserRoleId == (int)Enums.UserRole.NewMonafasat_DataEntry || u.UserRoleId == (int)Enums.UserRole.NewMonafasat_Auditer).FirstOrDefault().BranchId; mainNotificationTemplateModelForSupplier = new MainNotificationTemplateModel(NotificationArguments, $"AnnouncementSuppliersTemplate/AnnouncementSuppliersTemplateJoinRequestsDetails?AnnouncementId={Util.Encrypt(announcementModel.AnnouncementId)}", NotificationEntityType.Tender, announcement.AnnouncementId.ToString(), branchid); await _notificationAppService.SendNotificationForBranchUsers(NotificationOperations.DataEntry.OperationsOnTheTender.ReciveJoinRequest, branchid, mainNotificationTemplateModelForSupplier); await _notificationAppService.SendNotificationForBranchUsers(NotificationOperations.Auditor.OperationsOnTheTender.ReciveJoinRequest, branchid, mainNotificationTemplateModelForSupplier); await _announcementCommands.UpdateAnnouncementSupplierTemplateAsync(announcement); return(model); }
public async Task SendTenderByUnitSecretaryForModificationAsync(ReturnTenderToDataEntryFromUnitFormodificationsModel returnTenderToDataEntryFromUnitFormodificationsModel) { var tenderId = Util.Decrypt(returnTenderToDataEntryFromUnitFormodificationsModel.tenderIdString); Tender tender = await _tenderQueries.FindTenderWithUnitHistoryById(tenderId); _tenderDomainService.IsValidToReturnTenderToDataEntryForEdit(tender); tender.DeactiveAllAssingments(); tender.SetUnitStatus(Enums.TenderUnitStatus.ReturnedToAgencyForEdit); tender.DeleteUnitModificationAttachments(); TenderUnitStatusesHistory tenderUnitStatusesHistory = new TenderUnitStatusesHistory(comment: returnTenderToDataEntryFromUnitFormodificationsModel.notes, tenderUnitStatusId: (int)Enums.TenderUnitStatus.ReturnedToAgencyForEdit, updateTypeId: returnTenderToDataEntryFromUnitFormodificationsModel.modificationTypeId, estimatedValue: tender.EstimatedValue); tender.TenderUnitStatusesHistories.Add(tenderUnitStatusesHistory); tender.UpdateTenderStatus(Enums.TenderStatus.ReturnedFromUnitToAgencyForEdit, returnTenderToDataEntryFromUnitFormodificationsModel.notes, _httpContextAccessor.HttpContext.User.UserId(), TenderActions.SendTenderByUnitSecretaryForModification); List <TenderAttachment> tenderAttachments = new List <TenderAttachment>(); foreach (var file in returnTenderToDataEntryFromUnitFormodificationsModel.files) { tenderAttachments.Add(new TenderAttachment(file.Name, file.FileNetReferenceId, (int)Enums.AttachmentType.UnitModificationsAttachmentsToDataEntry)); } tender.Attachments.AddRange(tenderAttachments); #region [Send Notification] NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { tender.ReferenceNumber }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { tender.ReferenceNumber }, SMSArgs = new object[] { tender.ReferenceNumber } }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArguments, $"Tender/Details?STenderId={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), tender.BranchId); await _notificationAppService.SendNotificationForBranchUsers(NotificationOperations.Auditor.OperationsOnTheTender.editTenderFromUnit, tender.BranchId, mainNotificationTemplateModel); await _notificationAppService.SendNotificationForBranchUsers(NotificationOperations.DataEntry.OperationsOnTheTender.editTenderFromUnit, tender.BranchId, mainNotificationTemplateModel); #endregion _genericCommandRepository.Update(tender); await _genericCommandRepository.SaveAsync(); }
public async Task UpdateAllSecondNegotiationWaitingSupplierResponse() { var allNegotiations = await _communicationRequestJobQueries.FindAllSecondNegotiationWaitingSupplierResponse(); var agencies = await _communicationRequestJobQueries.FindAgenciesByAgencyCodes(allNegotiations.Select(d => d.AgencyCommunicationRequest.Tender.AgencyCode).Distinct().ToList()); int?agencyCategoryId = 0; foreach (var NEG in allNegotiations) { agencyCategoryId = agencies.Where(a => a.AgencyCode == NEG.AgencyCommunicationRequest.Tender.AgencyCode).FirstOrDefault().CategoryId; NEG.UpdateNegotiationStatus((int)Enums.enNegotiationStatus.SupplierNotAgreed); #region [Send Approval To Agency] int? committeId = NEG.AgencyCommunicationRequest.Tender.OffersCheckingCommitteeId; string userRole = Enums.UserRole.NewMonafasat_OffersCheckSecretary.ToString(); int codeId = NotificationOperations.OffersCheckSecretary.AgencyCommunicationRequest.RecectSecondNegotiationSupplier; if (NEG.AgencyCommunicationRequest.Tender.TenderTypeId == (int)Enums.TenderType.CurrentDirectPurchase || NEG.AgencyCommunicationRequest.Tender.TenderTypeId == (int)Enums.TenderType.NewDirectPurchase) { committeId = NEG.AgencyCommunicationRequest.Tender.DirectPurchaseCommitteeId; userRole = Enums.UserRole.NewMonafasat_SecretaryDirtectPurshasingCommittee.ToString(); codeId = NotificationOperations.DirectPurchaseSecretary.AgencyCommunicationRequest.RecectSecondNegotiationSupplier; } await _communicationRequestJobQueries.UpdateNegotiationAsync(NEG); NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { "", NEG.AgencyCommunicationRequest.Tender.ReferenceNumber }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { "", NEG.AgencyCommunicationRequest.Tender.ReferenceNumber }, SMSArgs = new object[] { "", NEG.AgencyCommunicationRequest.Tender.ReferenceNumber } }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArguments, $"CommunicationRequest/CreateSecondNegotiationRequestAsync/{Util.Encrypt(NEG.NegotiationId)}", NotificationEntityType.Tender, NEG.AgencyCommunicationRequest.Tender.TenderId.ToString(), NEG.AgencyCommunicationRequest.Tender.BranchId, committeId); await _notificationJobAppService.SendNotifications(codeId, NEG.AgencyCommunicationRequest.Tender.AgencyCode, agencyCategoryId.Value, mainNotificationTemplateModel, userRole, committeId.Value, 0); #endregion await _communicationRequestJobQueries.UpdateNegotiationSecondStageAsync(NEG); } await _communicationRequestJobQueries.SaveChanges(); }
private async Task SendNotificationAfterApproveAnnouncementCancel(AnnouncementSuppliersTemplateCancelModel cancelModel) { var JoinedSuppliers = await _announcementQueries.GetJoinedAnnouncementSuppliers(cancelModel.AnnouncementId); var AcceptedSuppliers = await _announcementQueries.GetAcceptedAnnouncementSuppliers(cancelModel.AnnouncementId); MainNotificationTemplateModel mainNotificationTemplateModelForSupplier; NotificationArguments NotificationArguments = new NotificationArguments(); NotificationArguments.BodyEmailArgs = new object[] { cancelModel.ReferenceNumber }; NotificationArguments.SubjectEmailArgs = new object[] { }; NotificationArguments.PanelArgs = new object[] { cancelModel.ReferenceNumber }; NotificationArguments.SMSArgs = new object[] { cancelModel.ReferenceNumber }; mainNotificationTemplateModelForSupplier = new MainNotificationTemplateModel(NotificationArguments, $"AnnouncementSuppliersTemplate/CancelAnnouncementSuppliersTemplate?announcementIdString={Util.Encrypt(cancelModel.AnnouncementId)}", NotificationEntityType.Announcement, cancelModel.AnnouncementId.ToString(), 0); await _notificationAppService.SendNotificationForSuppliers(NotificationOperations.CancelAnnouncementTemplate.OperationsToBeApproved.sendApprovedCancelAnnouncementTemplate, AcceptedSuppliers, mainNotificationTemplateModelForSupplier); await _notificationAppService.SendNotificationForSuppliers(NotificationOperations.CancelAnnouncementTemplate.OperationsToBeApproved.AcceptJoinedSupplierAnnouncementTemplate, JoinedSuppliers, mainNotificationTemplateModelForSupplier); }
public async Task ShoulNotSendNotificationByUserIdDirectPurchaseSucess() { MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel() { TemplateName = "templatename", BranchId = 1, CommitteeId = 1, Link = "link", RecipientnName = "RecipientnName", Args = new NotificationArguments() { BodyEmailArgs = new object[] { "email" }, SMSArgs = new object[] { "sms" } } }; await _sut.SendNotificationDirectByUserId(1, 1, mainNotificationTemplateModel); _notifayCommands.VerifyAll(); }
public async Task RejectApproveAnnouncementNotification(Announcement announcement) { NotificationArguments notificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { announcement.ReferenceNumber }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { announcement.ReferenceNumber }, SMSArgs = new object[] { announcement.ReferenceNumber } }; MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(notificationArguments, $"Announcement/GetAnnouncementDetails?AnnouncementIdString={Util.Encrypt(announcement.AnnouncementId)}", NotificationEntityType.Announcement, announcement.AnnouncementId.ToString(), announcement.BranchId); await _notificationAppService.SendNotificationForBranchUsers(NotificationOperations.DataEntry.AnnouncementOperations.RejectApproveAnnouncement, announcement.BranchId.Value, mainNotificationTemplateModel); }