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 ReOpenTenderByUnitSecertaryLevelAsync(string tenderIdString)
        {
            int    tenderId = Util.Decrypt(tenderIdString);
            Tender tender   = await _tenderQueries.FindTenderWithUnitHistoryById(tenderId);

            _tenderDomainService.IsValidToReOpenTenderByUnitSecretary(tender);
            TenderUnitStatusesHistory tenderUnitStatusesHistory = new TenderUnitStatusesHistory(comment: "", tenderUnitStatusId: (int)Enums.TenderUnitStatus.UnderUnitReviewLevelTwo, estimatedValue: tender.EstimatedValue);

            tender.TenderUnitStatusesHistories.Add(tenderUnitStatusesHistory);
            tender.SetUnitStatus(Enums.TenderUnitStatus.UnderUnitReviewLevelTwo);
            TenderUnitAssign tenderUnitAssign = new TenderUnitAssign(_httpContextAccessor.HttpContext.User.UserId(), tenderId, true, (int)UnitSpecialistLevel.UnitSpecialistLevelTwo);

            tender.TenderUnitStatusesHistories.Add(tenderUnitStatusesHistory);
            tender.ResetUnitSecretaryAction();
            _genericCommandRepository.Update(tender);
            await _genericCommandRepository.CreateAsync(tenderUnitAssign);

            await _genericCommandRepository.SaveAsync();
        }