public SaveVesselScheduleResponse SaveVesselSchedule(SaveVesselScheduleRequest request) { try { if (request.Id == 0) { var vesselSchedule = request.MapTo<VesselSchedule>(); var buyer = DataContext.Buyers.First(x => x.Id == request.BuyerId);// new Buyer { Id = request.BuyerId }; //DataContext.Buyers.Attach(buyer); var vessel = DataContext.Vessels.First(x => x.Id == request.VesselId);// new Vessel { Id = request.VesselId }; //DataContext.Vessels.Attach(vessel); vesselSchedule.Name = vessel.Name + "-" + buyer.Name + "-" + vessel.Type + "-" + vesselSchedule.Cargo; vesselSchedule.Buyer = buyer; vesselSchedule.Vessel = vessel; DataContext.VesselSchedules.Add(vesselSchedule); } else { var vesselSchedule = DataContext.VesselSchedules.FirstOrDefault(x => x.Id == request.Id); if (vesselSchedule != null) { request.MapPropertiesToInstance<VesselSchedule>(vesselSchedule); var buyer = DataContext.Buyers.First(x => x.Id == request.BuyerId);// new Buyer { Id = request.BuyerId }; //DataContext.Buyers.Attach(buyer); var vessel = DataContext.Vessels.First(x => x.Id == request.VesselId);// new Vessel { Id = request.VesselId }; //DataContext.Vessels.Attach(vessel); vesselSchedule.Name = vessel.Name + "-" + buyer.Name + "-" + vessel.Type + "-" + vesselSchedule.Cargo; vesselSchedule.Buyer = buyer; vesselSchedule.Vessel = vessel; } } DataContext.SaveChanges(); return new SaveVesselScheduleResponse { IsSuccess = true, Message = "Vessel Schedule has been saved" }; } catch (InvalidOperationException e) { return new SaveVesselScheduleResponse { IsSuccess = false, Message = e.Message }; } }
public SaveVesselScheduleResponse SaveVesselSchedule(SaveVesselScheduleRequest request) { try { var vesselSchedule = request.MapTo<VesselSchedule>(); if (request.Id == 0) { var buyer = DataContext.Buyers.First(x => x.Id == request.BuyerId);// new Buyer { Id = request.BuyerId }; //DataContext.Buyers.Attach(buyer); var vessel = DataContext.Vessels.First(x => x.Id == request.VesselId);// new Vessel { Id = request.VesselId }; //DataContext.Vessels.Attach(vessel); vesselSchedule.Name = string.Format("{0}-{1}-{2}-{3}", vessel.Name, buyer.Name, vessel.Type, vesselSchedule.Cargo); vesselSchedule.Buyer = buyer; vesselSchedule.Vessel = vessel; DataContext.VesselSchedules.Add(vesselSchedule); } else { vesselSchedule = DataContext.VesselSchedules.FirstOrDefault(x => x.Id == request.Id); if (vesselSchedule != null) { request.MapPropertiesToInstance<VesselSchedule>(vesselSchedule); var buyer = DataContext.Buyers.First(x => x.Id == request.BuyerId);// new Buyer { Id = request.BuyerId }; //DataContext.Buyers.Attach(buyer); var vessel = DataContext.Vessels.First(x => x.Id == request.VesselId);// new Vessel { Id = request.VesselId }; //DataContext.Vessels.Attach(vessel); vesselSchedule.Name = string.Format("{0}-{1}-{2}-{3}", vessel.Name, buyer.Name, vessel.Type, vesselSchedule.Cargo); vesselSchedule.Buyer = buyer; vesselSchedule.Vessel = vessel; } } DataContext.SaveChanges(); var response = new SaveVesselScheduleResponse { IsSuccess = true, Message = "Vessel Schedule has been saved" }; vesselSchedule = DataContext.VesselSchedules.Include(x => x.Buyer) .Include(x => x.Vessel) .Include(x => x.Vessel.Measurement) .Single(x => x.Id == vesselSchedule.Id); vesselSchedule.MapPropertiesToInstance(response); if (request.DerTransactionDate.HasValue) { var latestRemark = DataContext.NextLoadingSchedules.Where(x => x.VesselSchedule.Id == vesselSchedule.Id && x.CreatedAt <= request.DerTransactionDate) .OrderByDescending(x => x.CreatedAt) .FirstOrDefault(); if (latestRemark != null) { response.RemarkDate = latestRemark.CreatedAt.ToString("dd-MM-yyyy"); response.Remark = latestRemark.Remark; } } return response; } catch (InvalidOperationException e) { return new SaveVesselScheduleResponse { IsSuccess = false, Message = e.Message }; } }