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);
        }
Exemplo n.º 3
0
        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);
        }