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