public IHttpActionResult CreateNewChargingDetail([FromBody] InvoiceDetailJsonObj obj)
        {
            var invoiceInDb = _context.Invoices.Find(obj.invoiceId);

            var newInvoiceDetail = new InvoiceDetail
            {
                Activity     = obj.Activity,
                ChargingType = obj.ChargingType,
                Unit         = obj.Unit,
                Rate         = obj.Rate,
                Amount       = obj.Amount,
                Quantity     = obj.Quantity,
                Memo         = obj.Memo,
                Invoice      = invoiceInDb
            };

            invoiceInDb.TotalDue += obj.Amount;

            _context.InvoiceDetails.Add(newInvoiceDetail);
            _context.SaveChanges();

            var sampleDto = Mapper.Map <InvoiceDetail, InvoiceDetailDto>(_context.InvoiceDetails.OrderBy(x => x.Id).First());

            return(Created(Request.RequestUri + "/" + sampleDto.Id, sampleDto));
        }
        public void UpdateInvoiceDetail([FromUri] int invoiceDetailId, [FromBody] InvoiceDetailJsonObj obj)
        {
            var invoiceDetailInDb = _context.InvoiceDetails.Find(invoiceDetailId);

            invoiceDetailInDb.Activity     = obj.Activity;
            invoiceDetailInDb.Amount       = obj.Amount;
            invoiceDetailInDb.ChargingType = obj.ChargingType;
            invoiceDetailInDb.Cost         = obj.Cost;
            invoiceDetailInDb.DateOfCost   = obj.DateOfCost;
            invoiceDetailInDb.Memo         = obj.Memo;
            invoiceDetailInDb.Operator     = _userName;
            invoiceDetailInDb.Quantity     = obj.Quantity;
            invoiceDetailInDb.Rate         = obj.Rate;
            invoiceDetailInDb.Unit         = obj.Unit;

            _context.SaveChanges();
        }
        public IHttpActionResult CreateChargingItem([FromUri] string reference, [FromUri] string invoiceType, [FromBody] InvoiceDetailJsonObj obj)
        {
            var invoice = new InvoiceDetail();

            if (invoiceType == FBAInvoiceType.MasterOrder)
            {
                var masterOrderInDb = _context.FBAMasterOrders.SingleOrDefault(x => x.Container == reference);

                var invoiceDetail = new InvoiceDetail {
                    Activity       = obj.Activity,
                    ChargingType   = obj.ChargingType,
                    DateOfCost     = obj.DateOfCost,
                    Memo           = obj.Memo == null ? null : obj.Memo.ToUpper(),
                    Unit           = obj.Unit,
                    Rate           = obj.Rate,
                    Cost           = obj.Cost,
                    OriginalAmount = obj.OriginalAmount,
                    Discount       = obj.Discount,
                    Quantity       = obj.Quantity,
                    InvoiceType    = invoiceType,
                    Amount         = obj.Amount,
                    FBAMasterOrder = masterOrderInDb,
                    Operator       = _userName
                };

                invoice = invoiceDetail;
                _context.InvoiceDetails.Add(invoiceDetail);
            }
            else if (invoiceType == FBAInvoiceType.ShipOrder)
            {
                var shipOrderInDb = _context.FBAShipOrders.SingleOrDefault(x => x.ShipOrderNumber == reference);

                var invoiceDetail = new InvoiceDetail
                {
                    Activity       = obj.Activity,
                    ChargingType   = obj.ChargingType,
                    DateOfCost     = obj.DateOfCost,
                    Memo           = obj.Memo == null ? null : obj.Memo.ToUpper(),
                    Unit           = obj.Unit,
                    Rate           = obj.Rate,
                    Discount       = obj.Discount,
                    Cost           = obj.Cost,
                    Quantity       = obj.Quantity,
                    OriginalAmount = obj.OriginalAmount,
                    InvoiceType    = invoiceType,
                    Amount         = obj.Amount,
                    FBAShipOrder   = shipOrderInDb,
                    Operator       = _userName
                };

                invoice = invoiceDetail;
                _context.InvoiceDetails.Add(invoiceDetail);
            }

            _context.SaveChanges();

            return(Created(Request.RequestUri + "/", Mapper.Map <InvoiceDetail, InvoiceDetailDto>(invoice)));
        }