public async Task UpdateShipOrder([FromUri] int shipOrderId, [FromBody] ShipOrderDto obj) { if (Checker.CheckString(obj.ShipOrderNumber)) { throw new Exception("Container number cannot contain space."); } var shipOrderInDb = _context.FBAShipOrders.Find(shipOrderId); var oldValueDto = Mapper.Map <FBAShipOrder, FBAShipOrderDto>(shipOrderInDb); //如果更新的运单号不是之前的运单号且在数据库中有重复,则报错 if (obj.ShipOrderNumber != shipOrderInDb.ShipOrderNumber && _context.FBAShipOrders.SingleOrDefault(x => x.ShipOrderNumber == obj.ShipOrderNumber) != null) { throw new Exception("Ship Order Number " + obj.ShipOrderNumber + " has been taken. Please delete the existed order and try agian."); } shipOrderInDb.ShipOrderNumber = obj.ShipOrderNumber; shipOrderInDb.CustomerCode = obj.CustomerCode; shipOrderInDb.OrderType = obj.OrderType; shipOrderInDb.Destination = obj.Destination; shipOrderInDb.PickReference = obj.PickReference; shipOrderInDb.Carrier = obj.Carrier; shipOrderInDb.BOLNumber = obj.BOLNumber; shipOrderInDb.ETS = obj.ETS; shipOrderInDb.ETSTimeRange = obj.TimeRange; shipOrderInDb.PickNumber = obj.PickNumber; shipOrderInDb.PurchaseOrderNumber = obj.PurchaseOrderNumber; shipOrderInDb.EditBy = _userName; shipOrderInDb.Instruction = obj.Instruction; var resultDto = Mapper.Map <FBAShipOrder, FBAShipOrderDto>(shipOrderInDb); await _logger.AddUpdatedLogAndSaveChangesAsync <FBAShipOrder>(oldValueDto, resultDto, "Updated some basic ship order info", null, OperationLevel.Mediunm); }
public async Task <IHttpActionResult> CreateNewShipOrder([FromBody] ShipOrderDto obj) { if (Checker.CheckString(obj.ShipOrderNumber)) { throw new Exception("Container number cannot contain space."); } if (_context.FBAShipOrders.SingleOrDefault(x => x.ShipOrderNumber == obj.ShipOrderNumber) != null) { throw new Exception("Ship Order Number " + obj.ShipOrderNumber + " has been taken. Please delete the existed order and try agian."); } var shipOrder = new FBAShipOrder(); var chargingItemDetailList = new List <ChargingItemDetail>(); var customerWOInstructions = _context.UpperVendors .Include(x => x.InstructionTemplates) .SingleOrDefault(x => x.CustomerCode == obj.CustomerCode) .InstructionTemplates .ToList(); foreach (var c in customerWOInstructions) { chargingItemDetailList.Add(new ChargingItemDetail { Status = c.Status, HandlingStatus = FBAStatus.New, Description = c.Description, CreateBy = _userName, CreateDate = DateTime.Now }); } _context.ChargingItemDetails.AddRange(chargingItemDetailList); shipOrder.AssembleBaseInfo(obj.ShipOrderNumber, obj.CustomerCode, obj.OrderType, obj.Destination, obj.PickReference); shipOrder.CreateBy = _userName; shipOrder.CreateDate = DateTime.Now; shipOrder.BOLNumber = obj.BOLNumber; shipOrder.Carrier = obj.Carrier; shipOrder.ETS = obj.ETS; shipOrder.ETSTimeRange = obj.TimeRange; shipOrder.PickNumber = obj.PickNumber; shipOrder.PurchaseOrderNumber = obj.PurchaseOrderNumber; shipOrder.Instruction = obj.Instruction; shipOrder.ChargingItemDetails = chargingItemDetailList; _context.FBAShipOrders.Add(shipOrder); _context.SaveChanges(); var sampleDto = Mapper.Map <FBAShipOrder, FBAShipOrderDto>(_context.FBAShipOrders.OrderByDescending(x => x.Id).First()); await _logger.AddCreatedLogAsync <FBAShipOrder>(null, sampleDto, "Created a new FBA ship order", null, OperationLevel.Normal); return(Created(Request.RequestUri + "/" + sampleDto.Id, sampleDto)); }