Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        public IHttpActionResult Post(ServiceAppointmentModel baseRequest)
        {
            var response = service.SaveServiceApp(baseRequest);

            return(Ok(response));
        }