public async Task <IActionResult> AcceptLead([FromRoute] int id)
        {
            var command = new AcceptLeadCommand(id);
            var result  = await _mediator.Send(command);

            if (result.Status == LeadStatusType.Accepted.ToString())
            {
                await _mediator.Publish(new SendEmailEvent("*****@*****.**", $"Lead {id} is Accepted"));
            }
            return(result != null ? (IActionResult)Ok(result) : NotFound());
        }
示例#2
0
        public async Task Should_Accept_A_New_Lead_With_Price_less_than_500()
        {
            var dbContext = await InMemoryMockDbContext.GetDatabaseContext();

            var leadHandlerRepository = new LeadHandlerRepository(dbContext);

            var leads = await leadHandlerRepository.GetLeadsWithNewStatus();

            var job = leads.Where(x => (Convert.ToInt32(x.Price) < 500)).First();

            var leadHandler = new AcceptLeadHandler(leadHandlerRepository, CreateLogger <AcceptLeadHandler>());

            var cmd  = new AcceptLeadCommand(job.Id);
            var resp = await leadHandler.Handle(cmd, new CancellationToken());

            var leadInDb = await leadHandlerRepository.GetLeadById(job.Id);

            Assert.NotNull(resp);
            Assert.AreEqual(job.Id, resp.JobId);
            Assert.AreEqual(LeadStatusType.Accepted.ToString(), resp.Status);
            Assert.AreEqual(leadInDb.Price, job.Price);
            Assert.AreEqual(LeadStatusType.Accepted.ToString(), leadInDb.Status);
        }