public async Task UserPermissionRest(int UserId)
        {
            UserProfile userProfile = await _iDMQueries.FindUserProfileByIdAsync(UserId);

            if (userProfile != null)
            {
                userProfile.RestPermission();
                _genericCommandRepository.Update(userProfile);
                await _genericCommandRepository.SaveAsync();
            }
        }
        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);
        }