public void ShouldCreateNewTenderUnitAssign(int userProfileId, int tenderId, bool isCurrentlyAssigned, int unitSpecialistLevel) { TenderUnitAssign tenderUnitAssign = new TenderUnitAssign(userProfileId, tenderId, isCurrentlyAssigned, unitSpecialistLevel); Assert.Equal(userProfileId, tenderUnitAssign.UserProfileId); Assert.Equal(tenderId, tenderUnitAssign.TenderId); Assert.True(tenderUnitAssign.IsCurrentlyAssigned); Assert.Equal(unitSpecialistLevel, tenderUnitAssign.UnitSpecialistLevel); Assert.Equal(ObjectState.Added, tenderUnitAssign.State); }
public async Task SendToNewUserUnitBusinessManagementAsync(string tenderIdString, string userName) { var tenderId = Util.Decrypt(tenderIdString); Tender tender = await _tenderQueries.FindTenderWithUnitHistoryById(tenderId); Enums.UserRole userType; UnitSpecialistLevel userLevel; if (tender.TenderUnitStatusId == (int)Enums.TenderUnitStatus.UnderUnitReviewLevelOne || tender.TenderUnitStatusId == (int)Enums.TenderUnitStatus.WaitingUnitSecretaryReview) { userType = (Enums.UserRole)Enum.Parse(typeof(Enums.UserRole), RoleNames.UnitSpecialistLevel1, true); userLevel = (UnitSpecialistLevel)Enum.Parse(typeof(UnitSpecialistLevel), UnitSpecialistLevel.UnitSpecialistLevelOne.ToString(), true); tender.SetUnitStatus(Enums.TenderUnitStatus.UnderUnitReviewLevelOne); } else if (tender.TenderUnitStatusId == (int)Enums.TenderUnitStatus.UnderUnitReviewLevelTwo || tender.TenderUnitStatusId == (int)Enums.TenderUnitStatus.TenderTransferdToLevelTwo) { userType = (Enums.UserRole)Enum.Parse(typeof(Enums.UserRole), RoleNames.UnitSpecialistLevel2, true); userLevel = (UnitSpecialistLevel)Enum.Parse(typeof(UnitSpecialistLevel), UnitSpecialistLevel.UnitSpecialistLevelTwo.ToString(), true); tender.SetUnitStatus(Enums.TenderUnitStatus.UnderUnitReviewLevelTwo); } else if (tender.TenderUnitStatusId == (int)Enums.TenderUnitStatus.WaitingManagerApprove || tender.TenderUnitStatusId == (int)Enums.TenderUnitStatus.UnderManagerReviewing) { userType = (Enums.UserRole)Enum.Parse(typeof(Enums.UserRole), RoleNames.UnitManagerUser, true); userLevel = (UnitSpecialistLevel)Enum.Parse(typeof(UnitSpecialistLevel), UnitSpecialistLevel.UnitManager.ToString(), true); tender.SetUnitStatus(Enums.TenderUnitStatus.WaitingManagerApprove); } else { throw new SharedKernal.Exceptions.BusinessRuleException("لابد من اختيار مستخدم بنفس المستوى"); } var user = await _iDMAppService.FindUserProfileByUserNameAsync(userName); if (user == null) { user = await _iDMAppService.GetUserProfileByEmployeeId(userName, null, userType); Check.ArgumentNotNull(nameof(user), user); await _genericCommandRepository.CreateAsync(user); } else { user = await _iDMAppService.GetUserProfileByEmployeeId(userName, null, userType); } _tenderDomainService.IsValidToSendToNewUserUnitBusinessManagement(tender, user); TenderUnitAssign tenderUnitAssign = new TenderUnitAssign(user.Id, tenderId, true, (int)userLevel); TenderUnitStatusesHistory tenderUnitStatusesHistory = new TenderUnitStatusesHistory(comment: "", tenderUnitStatusId: tender.TenderUnitStatusId.Value, estimatedValue: tender.EstimatedValue); tender.TenderUnitStatusesHistories.Add(tenderUnitStatusesHistory); await _tenderCommands.UpdateAsync(tender); await _genericCommandRepository.CreateAsync(tenderUnitAssign); await _genericCommandRepository.SaveAsync(); }
public async Task OpenTenderByUnitSecretaryAsync(string tenderIdString) { var tenderId = Util.Decrypt(tenderIdString); Tender tender = await _tenderQueries.FindTenderWithUnitHistoryById(tenderId); _tenderDomainService.IsValidToOpenUnitStageByUnitSecretary(tender); TenderUnitStatusesHistory tenderUnitStatusesHistory = new TenderUnitStatusesHistory(comment: "", tenderUnitStatusId: (int)Enums.TenderUnitStatus.UnderUnitReviewLevelOne, estimatedValue: tender.EstimatedValue); TenderUnitAssign tenderUnitAssign = new TenderUnitAssign(_httpContextAccessor.HttpContext.User.UserId(), tenderId, true, (int)Enums.UnitSpecialistLevel.UnitSpecialistLevelOne); tender.TenderUnitStatusesHistories.Add(tenderUnitStatusesHistory); tender.SetUnitStatus(Enums.TenderUnitStatus.UnderUnitReviewLevelOne); _genericCommandRepository.Update(tender); await _genericCommandRepository.CreateAsync(tenderUnitAssign); await _genericCommandRepository.SaveAsync(); }
public async Task SendToLevelTwoFromUnitSecretaryLevelOneAsync(string tenderIdString, string userName, string notes) { var tenderId = Util.Decrypt(tenderIdString); Tender tender = await _tenderQueries.FindTenderWithUnitHistoryById(tenderId); _tenderDomainService.IsValidToSendToLevelTwoFromUnitSecretaryLevelOne(tender, userName); var user = await _iDMAppService.FindUserProfileByUserNameAsync(userName); if (user == null) { Enums.UserRole userType = (Enums.UserRole)Enum.Parse(typeof(Enums.UserRole), RoleNames.UnitSpecialistLevel2, true); user = await _iDMAppService.GetUserProfileByEmployeeId(userName, null, userType); Check.ArgumentNotNull(nameof(user), user); await _genericCommandRepository.CreateAsync(user); } TenderUnitAssign tenderUnitAssign = new TenderUnitAssign(user.Id, tenderId, true, (int)UnitSpecialistLevel.UnitSpecialistLevelTwo); tender.SetUnitStatus(Enums.TenderUnitStatus.TenderTransferdToLevelTwo); TenderUnitStatusesHistory tenderUnitStatusesHistory = new TenderUnitStatusesHistory(comment: notes, tenderUnitStatusId: (int)Enums.TenderUnitStatus.TenderTransferdToLevelTwo, estimatedValue: tender.EstimatedValue); tender.TenderUnitStatusesHistories.Add(tenderUnitStatusesHistory); #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); await _notificationAppService.SendNotificationForCommitteeUsers(NotificationOperations.UnitSecrtaryLevel2.OperationsOnTheTender.reviewTender, null, mainNotificationTemplateModel); #endregion await _tenderCommands.UpdateAsync(tender); await _genericCommandRepository.CreateAsync(tenderUnitAssign); await _genericCommandRepository.SaveAsync(); }