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 FinalApproveAnnouncemntSupplierTemplate([FromBody] AnnouncementFinalApprovalModel approvalModel)
 {
     await _announcementSupplierTemplateAppService.AnnouncementFinalApprove(approvalModel);
 }