Пример #1
0
        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());
        }
Пример #2
0
        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());
        }
Пример #3
0
        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());
        }
Пример #4
0
        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));
        }
Пример #5
0
        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));
        }
Пример #6
0
        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());
        }
Пример #7
0
        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());
        }
Пример #8
0
        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());
        }
Пример #9
0
        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());
        }
Пример #10
0
        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());
        }
Пример #11
0
        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);
        }