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); }
/// <summary> /// Set sound attribute. /// </summary> /// <param name="arguments">Notification arguments object.</param> /// <param name="toastXml">XML object used to add the sound attribute to.</param> private static void SetSoundAttribute(NotificationArguments arguments, XmlDocument toastXml) { var audio = toastXml.GetElementsByTagName("audio").FirstOrDefault(); if (audio == null) { audio = toastXml.CreateElement("audio"); var toastNode = ((XmlElement)toastXml.SelectSingleNode("/toast")); if (toastNode != null) { toastNode.AppendChild(audio); } } string sound; if (string.IsNullOrWhiteSpace(arguments.WindowsSound)) { sound = "file:///" + arguments.SoundPath; } else { sound = $"ms-winsoundevent:{arguments.WindowsSound}"; } var attribute = toastXml.CreateAttribute("src"); attribute.Value = sound; audio.Attributes.SetNamedItem(attribute); attribute = toastXml.CreateAttribute("loop"); attribute.Value = arguments.Loop; }
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 <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 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 <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 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 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 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 <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 <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); }
/// <summary> /// Send notification. /// </summary> /// <param name="arguments">Notification arguments object.</param> private static void SendNotification(NotificationArguments arguments) { //if (arguments.ApplicationId == Globals.DefaultApplicationId) //{ // ShortcutHelper.CreateShortcutIfNeeded(arguments.ApplicationId, arguments.ApplicationName); //} var toast = Notifier.ShowToast(arguments); }
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(); } } }
public MainNotificationTemplateModel ReturnMainNotificationTemplateModel() { NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { "", "", "" }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { "" }, SMSArgs = new object[] { "" } }; return(new MainNotificationTemplateModel(NotificationArguments, "", NotificationEntityType.Tender, "", 1)); }
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); } }
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 <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 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); }
public async Task SendToLevelTwoFromUnitSecretaryLevelOneAsync(string tenderIdString, string userName, string notes) { var tenderId = Util.Decrypt(tenderIdString); Tender tender = await _tenderQueries.FindTenderWithUnitHistoryById(tenderId); _tenderDomainService.IsValidToSendToLevelTwoFromUnitSecretaryLevelOne(tender, userName); var user = await _iDMAppService.FindUserProfileByUserNameAsync(userName); if (user == null) { Enums.UserRole userType = (Enums.UserRole)Enum.Parse(typeof(Enums.UserRole), RoleNames.UnitSpecialistLevel2, true); user = await _iDMAppService.GetUserProfileByEmployeeId(userName, null, userType); Check.ArgumentNotNull(nameof(user), user); await _genericCommandRepository.CreateAsync(user); } TenderUnitAssign tenderUnitAssign = new TenderUnitAssign(user.Id, tenderId, true, (int)UnitSpecialistLevel.UnitSpecialistLevelTwo); tender.SetUnitStatus(Enums.TenderUnitStatus.TenderTransferdToLevelTwo); TenderUnitStatusesHistory tenderUnitStatusesHistory = new TenderUnitStatusesHistory(comment: notes, tenderUnitStatusId: (int)Enums.TenderUnitStatus.TenderTransferdToLevelTwo, estimatedValue: tender.EstimatedValue); tender.TenderUnitStatusesHistories.Add(tenderUnitStatusesHistory); #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.UnitSecrtaryLevel2.OperationsOnTheTender.reviewTender, null, mainNotificationTemplateModel); #endregion await _tenderCommands.UpdateAsync(tender); await _genericCommandRepository.CreateAsync(tenderUnitAssign); await _genericCommandRepository.SaveAsync(); }
public async Task <AnnouncementTemplateMainDetailsModel> AnnouncementFinalApprove(AnnouncementFinalApprovalModel approvalModel) { var announcementId = Util.Decrypt(approvalModel.AnnouncementTemplateIdString); if (approvalModel.VerificationCode == null) { throw new BusinessRuleException(Resources.TenderResources.ErrorMessages.ExpiredActivationCode); } var verified = await _announcementDomainService.CheckVerificationCode(announcementId, approvalModel.VerificationCode, (int)Enums.VerificationType.Announcement); var model = new AnnouncementTemplateMainDetailsModel(); if (verified) { var announcementTemplate = await _announcementQueries.GetAnnouncementWithJoinRequestsById(announcementId); List <KeyValuePair <string, int> > ModifiedCrs = new List <KeyValuePair <string, int> >(); if (approvalModel.SuppliersIdsString.Count > 0) { List <int> suppliersIds = approvalModel.SuppliersIdsString.Select(r => Util.Decrypt(r)).ToList(); foreach (var request in announcementTemplate.AnnouncementJoinRequests.Where(r => suppliersIds.Contains(r.Id))) { ChangeRequestsStatus(request, ModifiedCrs); } } await _announcementCommands.UpdateAnnouncementSupplierTemplateAsync(announcementTemplate); MainNotificationTemplateModel mainNotificationTemplateModelForSupplier; NotificationArguments NotificationArguments = new NotificationArguments(); NotificationArguments.BodyEmailArgs = new object[] { announcementTemplate.ReferenceNumber }; NotificationArguments.SubjectEmailArgs = new object[] { }; NotificationArguments.PanelArgs = new object[] { announcementTemplate.ReferenceNumber }; NotificationArguments.SMSArgs = new object[] { announcementTemplate.ReferenceNumber }; mainNotificationTemplateModelForSupplier = new MainNotificationTemplateModel(NotificationArguments, $"AnnouncementSuppliersTemplate/AnnouncementSuppliersTemplateDetailsForSuppliers?announcmentIdString={approvalModel.AnnouncementTemplateIdString}", NotificationEntityType.Tender, announcementId.ToString(), 0); await _notificationAppService.SendNotificationForSuppliers(NotificationOperations.Supplier.OperationsOnTheTender.AcceptAnnouncementJoinRequest, ModifiedCrs.Where(cr => cr.Value == (int)Enums.AnnouncementTemplateJoinRequestStatus.Accepted).Select(cr => cr.Key).ToList(), mainNotificationTemplateModelForSupplier); await _notificationAppService.SendNotificationForSuppliers(NotificationOperations.Supplier.OperationsOnTheTender.RejectAnnouncementJoinRequest, ModifiedCrs.Where(cr => cr.Value == (int)Enums.AnnouncementTemplateJoinRequestStatus.Rejected).Select(cr => cr.Key).ToList(), mainNotificationTemplateModelForSupplier); } return(model); }
private async Task SendNotificationFinishStoppingPeroiod(Tender tender, int?agencyCategoryId) { NotificationArguments NotificationArgument = new NotificationArguments { BodyEmailArgs = new object[] { "", tender.ReferenceNumber, tender.Purpose, tender.LastEnqueriesDate.Value.ToString("dd/MM/yyyy"), tender.LastOfferPresentationDate.Value.ToString("dd/MM/yyyy"), tender.OffersOpeningDate == null ? Resources.SharedResources.DisplayInputs.NotFound : tender.OffersOpeningDate?.ToString("dd/MM/yyyy"), tender.OffersOpeningDate == null ? Resources.SharedResources.DisplayInputs.NotFound : tender.OffersOpeningDate?.ToString("hh:mm tt") }, PanelArgs = new object[] { tender.ReferenceNumber }, SMSArgs = new object[] { tender.ReferenceNumber } }; MainNotificationTemplateModel StopPeriod = new MainNotificationTemplateModel(NotificationArgument, $"Tender/Details?STenderId={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), 0, tender.OffersCheckingCommitteeId); MainNotificationTemplateModel StopPeriodDirectPurchase = new MainNotificationTemplateModel(NotificationArgument, $"Tender/Details?STenderId={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), 0, tender.DirectPurchaseCommitteeId); if (tender.TenderTypeId == (int)Enums.TenderType.NewDirectPurchase) { await _notificationJobAppService.SendNotifications(NotificationOperations.DirectPurchaseSecretary.OperationsOnTheTender.FinishStoppingPeriod, tender.AgencyCode, agencyCategoryId.Value, StopPeriodDirectPurchase, Enums.UserRole.NewMonafasat_SecretaryDirtectPurshasingCommittee.ToString(), (int)tender.DirectPurchaseCommitteeId); } else { await _notificationJobAppService.SendNotifications(NotificationOperations.OffersCheckSecretary.OperationsOnTheTender.FinishStoppingPeriod, tender.AgencyCode, agencyCategoryId.Value, StopPeriod, Enums.UserRole.NewMonafasat_OffersCheckSecretary.ToString(), (int)tender.OffersCheckingCommitteeId); } }
public async Task FindTendersWithPlaintsAfterStoppingPeriodJob() { List <AgencyCommunicationRequest> agencyCommunications = await _communicationRequestJobQueries.FindTendersWithPlaintsAfterStoppingPeriodJob(); var agencyCodeList = agencyCommunications.Select(d => d.Tender.AgencyCode).Distinct().ToList(); var agencies = await _communicationRequestJobQueries.FindAgenciesByAgencyCodes(agencyCodeList); int?agencyCategoryId = 0; foreach (var request in agencyCommunications) { if (request.PlaintNotification == null) { continue; } PlaintRequestNotification obj = request.PlaintNotification; obj.Update(true); _genericCommandRepository.Update(obj); await _genericCommandRepository.SaveAsync(); agencyCategoryId = agencies.Where(a => a.AgencyCode == request.Tender.AgencyCode).FirstOrDefault().CategoryId; NotificationArguments NotificationArguments = new NotificationArguments { BodyEmailArgs = new object[] { "", request.PlaintAcceptanceStatus.Name, request.Tender.ReferenceNumber }, SubjectEmailArgs = new object[] { }, PanelArgs = new object[] { request.Tender.ReferenceNumber }, SMSArgs = new object[] { request.Tender.ReferenceNumber } }; MainNotificationTemplateModel approveTender = new MainNotificationTemplateModel(NotificationArguments, $"Tender/Details?STenderId{Util.Encrypt(request.Tender.TenderId)}", NotificationEntityType.Tender, request.Tender.TenderId.ToString(), request.Tender.BranchId); if (request.Tender.TenderTypeId == (int)Enums.TenderType.NewDirectPurchase) { await _notificationJobAppService.SendNotifications(NotificationOperations.DirectPurchaseSecretary.AgencyCommunicationRequest.PlaintStoppingPeriodEnd, request.Tender.AgencyCode, agencyCategoryId.Value, approveTender, Enums.UserRole.NewMonafasat_SecretaryDirtectPurshasingCommittee.ToString(), (int)request.Tender.DirectPurchaseCommitteeId); } else { await _notificationJobAppService.SendNotifications(NotificationOperations.OffersCheckSecretary.AgencyCommunicationRequest.PlaintStoppingPeriodEnd, request.Tender.AgencyCode, agencyCategoryId.Value, approveTender, Enums.UserRole.NewMonafasat_OffersCheckSecretary.ToString(), (int)request.Tender.OffersCheckingCommitteeId); } } }