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 <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); }
public async Task GetAnnouncementTemplateMainDetails_Returns_Data() { var _expectedResult = new AnnouncementTemplateMainDetailsModel() { AnnouncementId = 1, AnnouncementName = "اول قائمة عامة اعلانات قوائم الموردين من مدخل البيانات بدون مدة سريان", }; _claims = new Claim[2] { new Claim(IdentityConfigs.Claims.isSemiGovAgency, "1"), new Claim(IdentityConfigs.Claims.SelectedCR, "030001000000") }; _announcementController = _announcementController.WithIdentity(_claims); var result = await _announcementController.GetAnnouncementTemplateDetailsForSuppliers(1); Assert.NotNull(result); Assert.IsType <AnnouncementTemplateMainDetailsModel>(result); Assert.Equal(_expectedResult.AnnouncementId, result.AnnouncementId); Assert.Equal(_expectedResult.AnnouncementName, result.AnnouncementName); }
public async Task <AnnouncementTemplateMainDetailsModel> SendJoinRequestToAnnouncment([FromBody] AnnouncementTemplateMainDetailsModel announcementModel) { var result = await _announcementSupplierTemplateAppService.SendJoinRequestToAnnouncment(announcementModel); return(result); }