public bool UpdateData(int userId, object dtoInputItems, out Library.DTO.Notification notification) { List <DTO.EstimatedPurchasingPriceSearchResultDTO> dtoItems = ((Newtonsoft.Json.Linq.JArray)dtoInputItems).ToObject <List <DTO.EstimatedPurchasingPriceSearchResultDTO> >(); notification = new Library.DTO.Notification { Type = Library.DTO.NotificationType.Success }; try { using (EstimatedPurchasingPriceMngEntities context = CreateContext()) { EstimatedPurchasingPrice dbNewItem; EstimatedPurchasingPriceHistory dbNewHistory; foreach (DTO.EstimatedPurchasingPriceSearchResultDTO dtoItem in dtoItems.Where(o => o.EstimatedPurchasingPriceID <= 0).ToList()) { dbNewItem = new EstimatedPurchasingPrice(); context.EstimatedPurchasingPrice.Add(dbNewItem); converter.DTO2DB(dtoItem, ref dbNewItem); dbNewItem.EstimatedPrice = dtoItem.NewEstimatedPrice; dbNewItem.Remark = dtoItem.NewRemark; dbNewItem.UpdatedBy = userId; dbNewItem.UpdatedDate = DateTime.Now; // add history dbNewHistory = new EstimatedPurchasingPriceHistory { EstimatedPrice = dtoItem.NewEstimatedPrice, Remark = dtoItem.NewRemark, UpdatedBy = userId, UpdatedDate = DateTime.Now }; dbNewItem.EstimatedPurchasingPriceHistory.Add(dbNewHistory); } var toBeUpdatedDTOs = dtoItems.Where(o => o.EstimatedPurchasingPriceID > 0 && (o.NewEstimatedPrice.HasValue || !string.IsNullOrEmpty(o.NewRemark))).ToList(); var toBeUpdatedDTOIDS = toBeUpdatedDTOs.Select(o => o.EstimatedPurchasingPriceID).ToList(); foreach (EstimatedPurchasingPrice dbItem in context.EstimatedPurchasingPrice.Where(o => toBeUpdatedDTOIDS.Contains(o.EstimatedPurchasingPriceID)).ToList()) { dbItem.EstimatedPrice = toBeUpdatedDTOs.FirstOrDefault(o => o.EstimatedPurchasingPriceID == dbItem.EstimatedPurchasingPriceID).NewEstimatedPrice; dbItem.Remark = toBeUpdatedDTOs.FirstOrDefault(o => o.EstimatedPurchasingPriceID == dbItem.EstimatedPurchasingPriceID).NewRemark; dbItem.UpdatedBy = userId; dbItem.UpdatedDate = DateTime.Now; // add history dbNewHistory = new EstimatedPurchasingPriceHistory { EstimatedPrice = dbItem.EstimatedPrice, Remark = dbItem.Remark, UpdatedBy = userId, UpdatedDate = DateTime.Now }; dbItem.EstimatedPurchasingPriceHistory.Add(dbNewHistory); } context.SaveChanges(); return(true); } } catch (Exception ex) { notification.Type = Library.DTO.NotificationType.Error; notification.Message = Library.Helper.GetInnerException(ex).Message; } return(false); }
public void DTO2DB(DTO.EstimatedPurchasingPriceSearchResultDTO dtoItem, ref EstimatedPurchasingPrice dbItem) { AutoMapper.Mapper.Map <DTO.EstimatedPurchasingPriceSearchResultDTO, EstimatedPurchasingPrice>(dtoItem, dbItem); }