public BaseResponse SaveServiceApp(ServiceAppointmentModel request) { unitOfWork.BeginTransaction(); Action <DC_ServiceAppointment> SaveChildren = (parent) => { if (request.ServiceItems != null) { var chargeItemIds = request.ServiceItems.Select(it => it.ServiceAppSIID).ToList(); var oldChargeItemIdsItemIds = parent.DC_SerAppSerIt.Select(it => it.ServiceAppSIID).ToList(); var chargeItemList = unitOfWork.GetRepository <DC_SerAppSerIt>().dbSet.Where(it => chargeItemIds.Contains(it.ServiceAppSIID)).ToList(); var oldChargeItemList = parent.DC_SerAppSerIt.ToList(); //更新存在的 oldChargeItemIdsItemIds.Intersect(chargeItemIds).ToList().ForEach(it => { var oldItem = oldChargeItemList.Where(a => a.ServiceAppSIID == it).FirstOrDefault(); var newItem = request.ServiceItems.Where(a => a.ServiceAppSIID == it).FirstOrDefault(); if (oldItem != null && newItem != null) { oldItem.Qty = newItem.Qty; } }); // 删除不存在的 oldChargeItemList.Except(chargeItemList).ToList().ForEach(it => { unitOfWork.GetRepository <DC_SerAppSerIt>().Delete(it); }); // 添加不存在的 request.ServiceItems.Where(a => a.ServiceAppSIID == 0).ToList().ForEach(it => parent.DC_SerAppSerIt.Add(Mapper.DynamicMap <DC_SerAppSerIt>(it))); } }; if (request.ServiceAppID == 0) { var model = Mapper.DynamicMap <DC_ServiceAppointment>(request); model.DC_SerAppSerIt = Mapper.DynamicMap <List <DC_SerAppSerIt> >(request.ServiceItems); model.CreatedTime = DateTime.Now; unitOfWork.GetRepository <DC_ServiceAppointment>().Insert(model); } else { var model = unitOfWork.GetRepository <DC_ServiceAppointment>().dbSet.FirstOrDefault((q) => q.ServiceAppID == request.ServiceAppID); SaveChildren(model); Mapper.DynamicMap(request, model); unitOfWork.GetRepository <DC_ServiceAppointment>().Update(model); } unitOfWork.Commit(); return(new BaseResponse()); }
public IHttpActionResult Post(ServiceAppointmentModel baseRequest) { var response = service.SaveServiceApp(baseRequest); return(Ok(response)); }