예제 #1
0
            protected override async Task Handle(Command command)
            {
                SalePipeline sale = _dbContext.SalesPipelines.FirstOrDefault(s => s.Id == command.SaleId);

                sale.Stage = command.Stage;

                _dbContext.SalesPipelines.Update(sale);
                await _dbContext.SaveChangesAsync();
            }
            protected override async Task <CommandResult> Handle(Query getAppointments)
            {
                SalePipeline sale = await _context.SalesPipelines.FindAsync(getAppointments.SaleId);

                if (sale == null)
                {
                    return(CommandResult.Fail($"Sale not found with Id: {getAppointments.SaleId}"));
                }

                return(CommandResult.Success);
            }
            protected override async Task Handle(Command request)
            {
                SalePipeline sale = await _context.SalesPipelines.FindAsync(request.SaleId);

                var folderData = new File
                {
                    Name     = sale.Code,
                    MimeType = File.FolderMimeType
                };

                var folder = await _driveApi.Create(folderData, request.AccessToken);

                sale.FolderId = folder.Id;

                _context.Update(sale);
                await _context.SaveChangesAsync();
            }
예제 #4
0
            protected override async Task Handle(Command request)
            {
                SalePipeline sale = await _context.SalesPipelines.FindAsync(request.SaleId);

                var calendar = new Calendar
                {
                    Summary     = $"Sale: {sale.Code}",
                    Description = $"Sale to: {sale.Customer.Id}",
                    TimeZone    = "America/Sao_Paulo"
                };

                Calendar newCalendar = await _calendarApi.CreateCalendar(calendar, request.AccessToken);

                sale.CalendarId = newCalendar.Id;

                _context.Update(sale);
                await _context.SaveChangesAsync();
            }
예제 #5
0
            protected async override Task <CommandResult> Handle(Command deleteSale)
            {
                SalePipeline sale = await _dbContext.SalesPipelines.FindAsync(deleteSale.SaleId.Value);

                if (sale == null)
                {
                    return(CommandResult.Fail($"Sale not found with Id: {deleteSale.SaleId}"));
                }

                _dbContext.Remove(sale);

                await _mediator.Publish(new Deleted()
                {
                    Sale = sale, AccessToken = deleteSale.AccessToken
                });

                await _dbContext.SaveChangesAsync();

                return(CommandResult.Success);
            }
예제 #6
0
            protected async override Task <CommandResult <Guid> > Handle(Command createSale)
            {
                // Busca o Cliente pelo Id
                Customer customer = await _dbContext.Customers.FindAsync(createSale.CustomerId);

                // Verifica se o Cliente existe
                if (customer == null)
                {
                    return(CommandResult <Guid> .Fail($"Customer not found with Id: {createSale.CustomerId}"));
                }

                // Verifica se ja existe alguma venda para o Cliente BUscado
                bool alreadyExists = _dbContext.SalesPipelines.Any(sale => sale.Customer.Id == customer.Id);

                if (alreadyExists)
                {
                    return(CommandResult <Guid> .Fail($"A Sale already exists for this customer"));
                }

                var salePipeline = new SalePipeline(customer);

                var hashIds  = new Hashids(salePipeline.Id.ToString(), 4);
                var hashCode = salePipeline.Id.GetHashCode();

                salePipeline.Code = hashIds.Encode(hashCode < 0 ? (hashCode * (-1)) : hashCode);

                await _dbContext.AddAsync(salePipeline);

                await _dbContext.SaveChangesAsync();

                await _mediator.Publish(new Created()
                {
                    SaleId = salePipeline.Id, AccessToken = createSale.AccessToken
                });

                return(CommandResult <Guid> .Success(salePipeline.Id));
            }