Exemplo n.º 1
0
 public override bool UpdateData(int userId, int id, ref object dtoItem, out Library.DTO.Notification notification)
 {
     notification = new Library.DTO.Notification()
     {
         Type = Library.DTO.NotificationType.Success
     };
     DTO.TransportInvoiceDTO dtoTransportInvoice = ((Newtonsoft.Json.Linq.JObject)dtoItem).ToObject <DTO.TransportInvoiceDTO>();
     try
     {
         using (TransportInvoiceEntities context = CreateContext())
         {
             TransportInvoice dbItem = null;
             if (id > 0)
             {
                 dbItem             = context.TransportInvoice.Where(o => o.TransportInvoiceID == id).FirstOrDefault();
                 dbItem.UpdatedBy   = userId;
                 dbItem.UpdatedDate = DateTime.Now;
             }
             else
             {
                 dbItem             = new TransportInvoice();
                 dbItem.CreatedBy   = userId;
                 dbItem.CreatedDate = DateTime.Now;
                 context.TransportInvoice.Add(dbItem);
             }
             if (dbItem == null)
             {
                 notification.Message = "data not found!";
                 return(false);
             }
             else
             {
                 //convert dto to db
                 converter.DTO2DB_TransportInvoice(dtoTransportInvoice, ref dbItem);
                 //remove orphan
                 context.TransportInvoiceContainerDetail.Local.Where(o => o.TransportInvoiceDetail == null).ToList().ForEach(o => context.TransportInvoiceContainerDetail.Remove(o));
                 context.TransportInvoiceDetail.Local.Where(o => o.TransportInvoice == null).ToList().ForEach(o => context.TransportInvoiceDetail.Remove(o));
                 //save data
                 context.SaveChanges();
                 //get return data
                 dtoItem = GetData(userId, dbItem.TransportInvoiceID, dbItem.BookingID, out notification).Data;
                 return(true);
             }
         }
     }
     catch (Exception ex)
     {
         notification.Type    = Library.DTO.NotificationType.Error;
         notification.Message = ex.Message;
         notification.DetailMessage.Add(ex.Message);
         if (ex.GetBaseException() != null)
         {
             notification.DetailMessage.Add(ex.GetBaseException().Message);
         }
         return(false);
     }
 }
Exemplo n.º 2
0
 public void DTO2DB_TransportInvoice(DTO.TransportInvoiceDTO dtoItem, ref TransportInvoice dbItem)
 {
     if (dtoItem.TransportInvoiceDetailDTOs != null)
     {
         //delete
         foreach (var item in dbItem.TransportInvoiceDetail.ToArray())
         {
             if (!dtoItem.TransportInvoiceDetailDTOs.Select(s => s.TransportInvoiceDetailID).Contains(item.TransportInvoiceDetailID))
             {
                 foreach (var sItem in item.TransportInvoiceContainerDetail.ToArray())
                 {
                     item.TransportInvoiceContainerDetail.Remove(sItem);
                 }
                 dbItem.TransportInvoiceDetail.Remove(item);
             }
             else
             {
                 foreach (var sItem in item.TransportInvoiceContainerDetail.ToArray())
                 {
                     var x = dtoItem.TransportInvoiceDetailDTOs.Where(o => o.TransportInvoiceDetailID == item.TransportInvoiceDetailID).FirstOrDefault().TransportInvoiceContainerDetailDTOs;
                     if (!x.Select(s => s.TransportInvoiceContainerDetailID).Contains(sItem.TransportInvoiceContainerDetailID))
                     {
                         item.TransportInvoiceContainerDetail.Remove(sItem);
                     }
                 }
             }
         }
         //update
         TransportInvoiceDetail          dbDetail;
         TransportInvoiceContainerDetail dbOrderDetail;
         foreach (var item in dtoItem.TransportInvoiceDetailDTOs)
         {
             if (item.TransportInvoiceDetailID < 0)
             {
                 dbDetail = new TransportInvoiceDetail();
                 dbItem.TransportInvoiceDetail.Add(dbDetail);
                 if (item.TransportInvoiceContainerDetailDTOs != null)
                 {
                     foreach (var sItem in item.TransportInvoiceContainerDetailDTOs)
                     {
                         dbOrderDetail = new TransportInvoiceContainerDetail();
                         dbDetail.TransportInvoiceContainerDetail.Add(dbOrderDetail);
                         AutoMapper.Mapper.Map <DTO.TransportInvoiceContainerDetailDTO, TransportInvoiceContainerDetail>(sItem, dbOrderDetail);
                     }
                 }
             }
             else
             {
                 dbDetail = dbItem.TransportInvoiceDetail.Where(o => o.TransportInvoiceDetailID == item.TransportInvoiceDetailID).FirstOrDefault();
                 if (dbDetail != null && item.TransportInvoiceContainerDetailDTOs != null)
                 {
                     foreach (var sItem in item.TransportInvoiceContainerDetailDTOs)
                     {
                         if (sItem.TransportInvoiceContainerDetailID > 0)
                         {
                             dbOrderDetail = dbDetail.TransportInvoiceContainerDetail.Where(o => o.TransportInvoiceContainerDetailID == sItem.TransportInvoiceContainerDetailID).FirstOrDefault();
                         }
                         else
                         {
                             dbOrderDetail = new TransportInvoiceContainerDetail();
                             dbDetail.TransportInvoiceContainerDetail.Add(dbOrderDetail);
                         }
                         if (dbOrderDetail != null)
                         {
                             AutoMapper.Mapper.Map <DTO.TransportInvoiceContainerDetailDTO, TransportInvoiceContainerDetail>(sItem, dbOrderDetail);
                         }
                     }
                 }
             }
             if (dbDetail != null)
             {
                 AutoMapper.Mapper.Map <DTO.TransportInvoiceDetailDTO, TransportInvoiceDetail>(item, dbDetail);
             }
         }
     }
     AutoMapper.Mapper.Map <DTO.TransportInvoiceDTO, TransportInvoice>(dtoItem, dbItem);
     dbItem.InvoiceDate = dtoItem.InvoiceDate.ConvertStringToDateTime();
 }