public async Task <ActionResult> DeleteOrder(Guid id) { var getOrderQuery = new GetOrderQuery(id); var order = await Mediator.Send(getOrderQuery); if (order == null) { return(NotFound("Order not found")); } Guid clientId = order.ClientId ?? new Guid(); var getClientQuery = new ContactDetailsQuery(clientId); var client = await Mediator.Send(getClientQuery); if (client == null) { return(NotFound("There is no client assigned to the order.")); } if (client.Status == "Invoice") { return(BadRequest("You can't delete an order which is waiting for finalization. Downgrade client's status first.")); } var deleteOrderCommand = new DeleteOrderCommand(client, order); await Mediator.Send(deleteOrderCommand); return(NoContent()); }
public async Task <ActionResult> AbandonLead(Guid id, bool saveLead, bool keepRecords) { var loggedUserQuery = new LoggedUserQuery(); User user = await Mediator.Send(loggedUserQuery); var getLeadQuery = new ContactDetailsQuery(id); var lead = await Mediator.Send(getLeadQuery); if (lead == null) { return(NotFound("Lead not found.")); } Console.WriteLine(saveLead); foreach (var process in lead.CurrentSale) { if (process.OrderId != null) { return(BadRequest("Delete or close the order before cancelling this process.")); } } var abandonLead = new AbandonLeadCommand(user.Id, lead, saveLead, keepRecords); await Mediator.Send(abandonLead); return(NoContent()); }
public async Task <ActionResult> ChangeStatus(Guid id, bool upgrade) { var getContactQuery = new ContactDetailsQuery(id); var contact = await Mediator.Send(getContactQuery); if (contact == null) { return(NotFound("Lead not found")); } var getLeadQuery = new LeadDetailsQuery(contact); var lead = await Mediator.Send(getLeadQuery); if (lead.Contact.Status == "Invoice" && !lead.Order.Closed && upgrade) { return(BadRequest("Close the order before conversion.")); } else if (lead.Contact.Status == "Quote" && lead.Order == null && upgrade) { return(BadRequest("Add an order before upgrading lead to 'Invoice'.")); } else if (lead.Contact.Status == "Invoice" && lead.Order != null && lead.Order.Closed && !upgrade) { return(BadRequest("Order has been finalized. You can't downgrade the lead, please convert.")); } var changeStatusCommand = new ChangeStatusCommand(contact, upgrade); await Mediator.Send(changeStatusCommand); return(NoContent()); }
public async Task <ActionResult <ContactViewModel> > ContactDetails(Guid id) { var contactDetailsQuery = new ContactDetailsQuery(id); var contact = await Mediator.Send(contactDetailsQuery); if (contact == null) { return(NotFound("Contact not found")); } return(Mapper.Map <Contact, ContactViewModel>(contact)); }
public async Task <ActionResult <LeadViewModel> > LeadDetails(Guid id) { var getContactQuery = new ContactDetailsQuery(id); var contact = await Mediator.Send(getContactQuery); if (contact == null) { return(NotFound("Lead not found.")); } var leadDetailsQuery = new LeadDetailsQuery(contact); var lead = await Mediator.Send(leadDetailsQuery); return(Mapper.Map <Lead, LeadViewModel>(lead)); }
public async Task <ActionResult> DeleteContact(Guid id) { var contactDetailsQuery = new ContactDetailsQuery(id); var contact = await Mediator.Send(contactDetailsQuery); if (contact == null) { return(NotFound("Contact not found")); } var deleteContactCommand = new DeleteContactCommand(contact); await Mediator.Send(deleteContactCommand); return(NoContent()); }
public async Task <ActionResult> EditContact([CustomizeValidator(Interceptor = typeof(API.Middleware.ValidatorInterceptor))] ContactViewModel contact) { var contactDetailsQuery = new ContactDetailsQuery(contact.Id); var getContact = await Mediator.Send(contactDetailsQuery); if (getContact == null) { return(NotFound("Contact not found")); } var editContactCommand = new EditContactCommand(getContact, contact.Name, contact.Type, contact.Company, contact.PhoneNumber, contact.Email, contact.Notes, contact.Source); await Mediator.Send(editContactCommand); return(NoContent()); }
public async Task <ActionResult> UpgradeToPremium(Guid id) { var contactDetailsQuery = new ContactDetailsQuery(id); var contact = await Mediator.Send(contactDetailsQuery); if (contact == null) { return(NotFound("Contact not found")); } var upgradeToPremiumCommand = new UpgradeToPremiumCommand(contact.Id); await Mediator.Send(upgradeToPremiumCommand); return(NoContent()); }
public async Task <ActionResult> StartSaleProcess(Guid id) { var contactDetailsQuery = new ContactDetailsQuery(id); var contact = await Mediator.Send(contactDetailsQuery); if (contact == null) { return(NotFound("Contact not found")); } var startSaleProcessCommand = new StartSaleProcessCommand(contact); await Mediator.Send(startSaleProcessCommand); return(NoContent()); }
public async Task <ActionResult> UnshareContact(Guid id) { var contactDetailsQuery = new ContactDetailsQuery(id); var contact = await Mediator.Send(contactDetailsQuery); if (contact == null) { return(BadRequest("Contact not found")); } var loggedUserQuery = new LoggedUserQuery(); User user = await Mediator.Send(loggedUserQuery); var unshareContactCommand = new UnshareContactCommand(contact.Id, user.Id); await Mediator.Send(unshareContactCommand); return(NoContent()); }
public async void Returns_Contacts_Details() { //Arrange Guid contactId = Context.Contacts.First().Id; var queryContactDetails = new ContactDetailsQuery(contactId); Mediator.Setup(x => x.Send(It.IsAny <ContactDetailsQuery>(), new CancellationToken())) .ReturnsAsync(new Contact()); //Act var handler = new ContactDetailsQueryHandler(Context); var result = await handler.Handle(queryContactDetails, new CancellationToken()); //Assert result.Should() .BeOfType <Contact>(); result.Status.Should() .NotBeNullOrEmpty(); DbContextFactory.Destroy(Context); }