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

            _employerRepository = Substitute.For <IRepository <Domain.Models.Employer> >();
            var opportunityRepository = Substitute.For <IOpportunityRepository>();

            _employerRepository.GetSingleOrDefaultAsync(Arg.Any <Expression <Func <Domain.Models.Employer, bool> > >())
            .Returns((Domain.Models.Employer)null);

            _messageQueueService = Substitute.For <IMessageQueueService>();

            var employerService = new EmployerService(_employerRepository, opportunityRepository, mapper, new CrmEmployerEventDataValidator(),
                                                      _messageQueueService);

            _employerEventBase = new CrmEmployerEventBaseBuilder()
                                 .WithValidAupaStatus().Build();

            var data = JsonConvert.SerializeObject(_employerEventBase, new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore
            });

            employerService.HandleEmployerCreatedAsync(data).GetAwaiter().GetResult();
        }
Ejemplo n.º 2
0
        public CrmEmployerEventBaseBuilder()
        {
            _crmEmployerEventBase = new CrmEmployerEventBase
            {
                AccountId = Guid.NewGuid().ToString(),
                Name      = "Test",

                AddressLine = "Test",
                PostCode    = "Test",

                CustomerTypeCode = new Customertypecode {
                    Value = 200005
                },

                PrimaryContactId = new PrimaryContactId {
                    Name = "Test"
                },
                ContactEmail      = "*****@*****.**",
                ContactTelephone1 = "0123456789",

                Phone        = "NOT_IN_USE",
                EmailAddress = "NOT_IN_USE",

                OwnerEmail  = "NOT_IN_USE",
                OwnerIdName = "Test",

                Alias = "Test",

                CeasedTrading      = 0,
                EmployerManagement = null,
            };
        }
Ejemplo n.º 3
0
 private async Task AddMessageToQueueAsync(CrmEmployerEventBase employerData)
 {
     await _messageQueueService.PushEmployerAupaBlankEmailMessageAsync(new SendEmployerAupaBlankEmail
     {
         Name         = employerData.Name,
         Owner        = employerData.OwnerIdName,
         ContactEmail = employerData.ContactEmail,
         ContactPhone = employerData.ContactTelephone1,
         CrmId        = new Guid(employerData.AccountId)
     });
 }
Ejemplo n.º 4
0
        private async Task <int> CreateOrUpdateEmployerAsync(CrmEmployerEventBase employerData)
        {
            var validationResult = await _employerValidator.ValidateAsync(employerData);

            var isAupaMissing = false;

            if (!validationResult.IsValid)
            {
                isAupaMissing = IsAupaMissing(validationResult.Errors);
                if (!isAupaMissing)
                {
                    return(-1);
                }
            }

            if (isAupaMissing)
            {
                var existingReferrals = await _opportunityRepository.GetFirstOrDefaultAsync(o => o.EmployerCrmId == employerData.AccountId.ToGuid() && o.OpportunityItem.Count(oi => oi.Referral.Any()) > 0);

                if (existingReferrals == null)
                {
                    return(-1);
                }
                await AddMessageToQueueAsync(employerData);

                return(-1);
            }

            var existingEmployer = await _employerRepository.GetSingleOrDefaultAsync(emp => emp.CrmId == employerData.AccountId.ToGuid());

            if (existingEmployer == null)
            {
                var employer = _mapper.Map <Employer>(employerData);
                employer.CreatedBy = "System";
                employer.CreatedOn = DateTime.UtcNow;
                return(await _employerRepository.CreateAsync(employer));
            }

            existingEmployer            = _mapper.Map(employerData, existingEmployer);
            existingEmployer.ModifiedBy = "System";
            existingEmployer.ModifiedOn = DateTime.UtcNow;
            await _employerRepository.UpdateAsync(existingEmployer);

            return(1);
        }