private async Task ValidateAsync(FindEmployerViewModel viewModel, string currentUser)
        {
            var isValidEmployer =
                await _employerService.ValidateCompanyNameAndCrmIdAsync(viewModel.SelectedEmployerCrmId, viewModel.CompanyName);

            if (!isValidEmployer)
            {
                ModelState.AddModelError(nameof(viewModel.CompanyName), "You must find and choose an employer");
            }
            else
            {
                var lockedByUser = await _employerService
                                   .GetEmployerOpportunityOwnerAsync(viewModel.SelectedEmployerCrmId);

                if (!string.IsNullOrEmpty(lockedByUser))
                {
                    if (lockedByUser == currentUser)
                    {
                        ModelState.AddModelError(nameof(viewModel.CompanyName),
                                                 "You are already working on this employer’s opportunities. Please start again and find this employer in your saved opportunities.");
                    }
                    else
                    {
                        ModelState.AddModelError(nameof(viewModel.CompanyName),
                                                 "Your colleague, " + $"{lockedByUser}, is already working on this employer’s opportunities. " +
                                                 "Please choose a different employer.");
                    }
                }
            }
        }
Beispiel #2
0
        public When_Employer_SaveOpportunityCompanyName_Is_Submitted_And_Employer_Is_Already_In_Opportunity()
        {
            var employerService = Substitute.For <IEmployerService>();

            employerService.ValidateCompanyNameAndCrmIdAsync(Arg.Any <Guid>(), Arg.Any <string>())
            .Returns(true);
            employerService.GetEmployerOpportunityOwnerAsync(Arg.Any <Guid>())
            .Returns("Another User");
            var opportunityService = Substitute.For <IOpportunityService>();
            var referralService    = Substitute.For <IReferralService>();

            var viewModel = new FindEmployerViewModel
            {
                OpportunityId = 1,
                CompanyName   = "Company Name"
            };

            var config = new MapperConfiguration(c => c.AddMaps(typeof(EmployerMapper).Assembly));
            var mapper = new Mapper(config);

            _employerController = new EmployerController(employerService, opportunityService, referralService, mapper);
            var controllerWithClaims = new ClaimsBuilder <EmployerController>(_employerController)
                                       .Add(ClaimTypes.Role, RolesExtensions.StandardUser)
                                       .AddUserName("Current User")
                                       .Build();

            _result = controllerWithClaims.SaveOpportunityCompanyNameAsync(viewModel).GetAwaiter().GetResult();
        }
Beispiel #3
0
        public When_Employer_SaveOpportunityCompanyName_Is_Submitted_Invalid_Employer()
        {
            var employerService = Substitute.For <IEmployerService>();

            employerService.ValidateCompanyNameAndCrmIdAsync(Arg.Any <Guid>(), Arg.Any <string>())
            .Returns(false);
            var opportunityService = Substitute.For <IOpportunityService>();

            var viewModel = new FindEmployerViewModel
            {
                CompanyName = "Invalid Business Name"
            };

            var config          = new MapperConfiguration(c => c.AddMaps(typeof(EmployerMapper).Assembly));
            var referralService = Substitute.For <IReferralService>();
            var mapper          = new Mapper(config);

            var employerController = new EmployerController(employerService, opportunityService, referralService, mapper);

            _employerController = new ClaimsBuilder <EmployerController>(employerController)
                                  .Add(ClaimTypes.Role, RolesExtensions.StandardUser)
                                  .AddUserName("Username")
                                  .Build();

            _result = _employerController.SaveOpportunityCompanyNameAsync(viewModel).GetAwaiter().GetResult();
        }
        public When_EmployerService_Is_Called_To_Get_Opportunity_Employer()
        {
            var employerRepository = Substitute.For <IRepository <Domain.Models.Employer> >();

            _opportunityRepository = Substitute.For <IOpportunityRepository>();

            _opportunityRepository.GetSingleOrDefaultAsync(Arg.Any <Expression <Func <Domain.Models.Opportunity, bool> > >(),
                                                           Arg.Any <Expression <Func <Domain.Models.Opportunity, FindEmployerViewModel> > >())
            .Returns(new FindEmployerViewModelBuilder().BuildWithEmployer());

            var employerService = new EmployerService(employerRepository, _opportunityRepository, Substitute.For <IMapper>(), Substitute.For <IValidator <CrmEmployerEventBase> >(),
                                                      Substitute.For <IMessageQueueService>());

            _result = employerService.GetOpportunityEmployerAsync(1, 2).GetAwaiter().GetResult();
        }
        public async Task <IActionResult> SaveOpportunityCompanyNameAsync(FindEmployerViewModel viewModel)
        {
            var username = HttpContext.User.GetUserName();

            await ValidateAsync(viewModel, username);

            if (!ModelState.IsValid)
            {
                return(View("FindEmployer", viewModel));
            }

            var dto = _mapper.Map <CompanyNameDto>(viewModel);

            await _opportunityService.UpdateOpportunityAsync(dto);

            return(RedirectToRoute("GetEmployerDetails", new { viewModel.OpportunityId, viewModel.OpportunityItemId }));
        }