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(); }
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, }; }
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) }); }
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); }