public static void Save(MoveOrderModel moveOrderModel) { MoveOrder entity = GetEntityByModel(moveOrderModel); string result = string.Empty; if (entity.IsValid()) { if (moveOrderModel.Id > 0) { result = service.Update(entity); } else { result = service.Insert(entity); } if (!string.IsNullOrEmpty(result)) { var savedDetail = GetMoveOrderLines(result); if (savedDetail.Count() > moveOrderModel.MoveOrderDetail.Count()) { var tobeDeleted = savedDetail.Take(savedDetail.Count() - moveOrderModel.MoveOrderDetail.Count()); foreach (var item in tobeDeleted) { service.Delete(item.Id); IEnumerable <LotNumber> lotNum = lotNumService.CheckLotNumAvailability(AuthenticationHelper.CompanyId.Value, item.LotNo, item.ItemId, SessionHelper.SOBId); if (lotNum.Any()) { LotNumberHelper.Delete(lotNum.FirstOrDefault().Id.ToString()); } //IEnumerable<SerialNumber> serialNum = lotNumService.CheckSerialNumAvailability(AuthenticationHelper.CompanyId.Value, item.LotNo, item.SerialNo); //if (serialNum.Any()) //{ // LotNumberHelper.DeleteSerialNumber(serialNum.FirstOrDefault().Id.ToString()); //} } savedDetail = GetMoveOrderLines(result); } foreach (var detail in moveOrderModel.MoveOrderDetail) { MoveOrderDetail detailEntity = GetEntityByModel(detail, savedDetail.Count()); if (detailEntity.IsValid()) { detailEntity.MoveOrderId = Convert.ToInt64(result); if (savedDetail.Count() > 0) { detailEntity.Id = savedDetail.FirstOrDefault().Id; savedDetail.Remove(savedDetail.FirstOrDefault(rec => rec.Id == detailEntity.Id)); service.Update(detailEntity); IEnumerable <LotNumber> lotNum = lotNumService.CheckLotNumAvailability(AuthenticationHelper.CompanyId.Value, detailEntity.LotNo, detailEntity.ItemId, SessionHelper.SOBId); if (lotNum.Any()) { LotNumberHelper.Update(lotNum.FirstOrDefault()); } //IEnumerable<SerialNumber> serialNum = lotNumService.CheckSerialNumAvailability(AuthenticationHelper.CompanyId.Value, detailEntity.LotNo, detailEntity.SerialNo); //if (serialNum.Any()) //{ // LotNumberHelper.UpdateSerialNumber(serialNum.FirstOrDefault()); //} } else { service.Insert(detailEntity); IEnumerable <LotNumber> lotNum = lotNumService.CheckLotNumAvailability(AuthenticationHelper.CompanyId.Value, detailEntity.LotNo, detailEntity.ItemId, SessionHelper.SOBId); if (!lotNum.Any()) { LotNumberHelper.Insert(new MoveOrderDetailModel(detailEntity)); } //IEnumerable<SerialNumber> serialNum = lotNumService.CheckSerialNumAvailability(AuthenticationHelper.CompanyId.Value, detailEntity.LotNo, detailEntity.SerialNo); //if (!serialNum.Any()) //{ // LotNumberHelper.InsertSerialNumber(new MoveOrderDetailModel(detailEntity)); //} } } } } } }