public async Task <ActionResult <CustomerModel> > PostAsync([FromBody] CustomerModel model)
        {
            try
            {
                var entity = _mapper.Map <Customer>(model);

                if (await _repository.HasCustomerAsync(UserName))
                {
                    return(BadRequest("Duplicate Customer"));
                }

                entity.UserName = UserName;

                _repository.Add(entity);

                if (await _repository.SaveAllAsync())
                {
                    return(CreatedAtRoute(new { }, _mapper.Map <CustomerModel>(entity)));
                }
            }
            catch (Exception ex)
            {
                _logger.LogWarning("Failed to save customer", ex);
            }

            return(BadRequest("Could not create new Customer"));
        }
示例#2
0
        public void Post(int[] albumsIds)
        {
            int              currentWeekday = (int)((DayOfWeek)Enum.Parse(typeof(DayOfWeek), DateTime.Now.DayOfWeek.ToString()));
            IList <Albums>   albums         = _repoAlbums.Find(c => albumsIds.Contains(c.AlbumsId)).ToList();
            IList <CashBack> cashback       = _repoCash.Find(c => c.Weekday == currentWeekday).ToList();
            Albums           album;
            Sales            sale = new Sales();

            sale.Date = DateTime.Now;
            AlbumsSold albumSold;

            foreach (int id in albumsIds)
            {
                album = albums.Where(c => c.AlbumsId == id).FirstOrDefault();

                if (album != null)
                {
                    albumSold          = new AlbumsSold();
                    albumSold.AlbumsId = album.AlbumsId;
                    albumSold.Price    = album.Price;
                    albumSold.CashBack = cashback.Where(c => c.Genre == album.Genre).FirstOrDefault().value;
                    sale.Albums.Add(albumSold);
                }
            }

            _repo.Add(sale);
            _repo.SaveChanges();
        }
        public Task <bool> Handle(RegisterNewSalesCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                NotifyValidationErrors(message);
                return(Task.FromResult(false));
            }

            var Sales = new Sales(Guid.NewGuid(), message.SalesDate, message.TotalAmount, message.TotalCashback);

            decimal totalAmount   = 0;
            decimal totalCashback = 0;

            Sales.Lines = new List <SalesLine>();

            foreach (var item in message.SalesLines)
            {
                var disc = _discMusicRepository.GetById(item.IdDisc);
                if (disc == null)
                {
                    NotifyValidationErrors(message);
                    return(Task.FromResult(false));
                }
                var cashback = _cashbackRepository.GetByWeekDay(disc.IdGender, Sales.SalesDate);

                var salesPrice     = item.Quantity * disc.Price;
                var cashbackAmount = salesPrice * cashback.Percent;

                totalAmount   += salesPrice;
                totalCashback += cashbackAmount;

                Sales.Lines.Add(new SalesLine(Guid.NewGuid(), Sales.Id, item.IdDisc, disc.Name, item.Quantity, disc.Price, salesPrice, cashbackAmount));
            }

            Sales.TotalAmount   = totalAmount;
            Sales.TotalCashback = totalCashback;

            _salesRepository.Add(Sales);

            if (Commit())
            {
                Bus.RaiseEvent(new SalesRegisteredEvent(
                                   Sales.Id,
                                   Sales.SalesDate,
                                   Sales.TotalAmount,
                                   Sales.TotalCashback,
                                   Sales.Lines.ToList().ConvertAll(x =>
                                                                   new SalesLineRegisteredEvent(
                                                                       x.Id,
                                                                       x.IdSales,
                                                                       x.IdItem,
                                                                       x.Quantity,
                                                                       x.PriceUnit,
                                                                       x.SalesPrice,
                                                                       x.Cashback))));
            }

            return(Task.FromResult(false));
        }
        public async Task <ActionResult <TicketSaleModel> > Post(int customerId, [FromBody] TicketRequestModel model)
        {
            try
            {
                var customer = await _repository.GetCustomerAsync(customerId);

                if (customer == null)
                {
                    return(NotFound());
                }

                // Check Ticket Availability
                var result = await _ticketService.ReserveTickets(model.TicketIds);

                if (result)
                {
                    // Process Creditcard (no/op in example)

                    // Finalize Tickets
                    var finalizedTickets = await _ticketService.FinalizeTickets(model.TicketIds);

                    if (finalizedTickets.Success)
                    {
                        // Create the Sales Record

                        var ticketSale = new TicketSale()
                        {
                            Customer          = customer,
                            Completed         = true,
                            ApprovalCode      = "FOOBAR",
                            TransactionNumber = "123456",
                            PaymentType       = "Credit Card",
                            TransactionTotal  = finalizedTickets.Tickets.Sum(t => (decimal)t.Price),
                            Tickets           = finalizedTickets.Tickets.ToArray()
                        };

                        _repository.Add(ticketSale);

                        if (await _repository.SaveAllAsync())
                        {
                            return(CreatedAtRoute(new { customerId = customerId, id = ticketSale.Id }, _mapper.Map <TicketSaleModel>(ticketSale)));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Failed to create TicketRequest", ex);
            }

            return(BadRequest());
        }
 public async Task SaveSale(OrderChangedMessage order)
 {
     if (order.State == Orders.Contract.Enums.OrderState.Paid)
     {
         var sales = new Sales
         {
             Date    = DateTime.Now,
             Price   = order.Value,
             SaleId  = order.OrderId,
             StoreId = order.StoreId
         };
         await _salesRepository.Add(sales);
     }
 }
示例#6
0
 public IActionResult Create(Sales model)
 {
     if (ModelState.IsValid)
     {
         Sales newSal = new Sales
         {
             EmpId        = model.EmpId,
             CustOrderId  = model.CustOrderId,
             Total        = model.Total,
             Paid         = model.Paid,
             Due          = model.Due,
             DeliveryDate = model.DeliveryDate
         };
         _salesRepository.Add(newSal);
         return(RedirectToAction("Index"));
     }
     return(View());
 }
示例#7
0
        public void Execute(CreateSaleModel model)
        {
            var date     = _dateService.GetDate();
            var partner  = _partnersRepository.Get(model.PartnerId);
            var customer = _customerRepository.Get(model.CustomerId);
            var products = new List <Product>();

            foreach (var productId in model.ProductIdsQuantities.Keys)
            {
                var product = _productRepository.Get(productId);
                products.Add(product);
            }

            var newSale = _saleFactory.Create(date, customer,
                                              partner, products, model.ProductIdsQuantities);

            _salesRepository.Add(newSale);

            _salesRepository.Save();
        }
 public SalesViewModel Add(SalesViewModel sales)
 {
     _salesRepository.Add(Mapper.Map <Sales>(sales));
     return(sales);
 }