/// <summary>
 /// 添加车型档次喷漆配置操作日志
 /// </summary>
 /// <param name="vehicleLevel"></param>
 /// <param name="vehicleIds"></param>
 /// <param name="initalWord"></param>
 /// <param name="type"></param>
 /// <param name="operateUser"></param>
 /// <returns></returns>
 private void SavePaintVehicleLevelLog(List <VehicleLevelLog> toValue, string Remarks, string vehicleIds, string operateUser)
 {
     if (toValue.Any())
     {
         foreach (var value in toValue)
         {
             var log = new PaintVehicleOprLog
             {
                 LogType      = "PaintVehicleLevelConfig",
                 VehicleLevel = value.VehicleLevel,
                 VehicleId    = value.VehicleId,
                 OldValue     = Remarks == "Add" ? null : JsonConvert.SerializeObject(value),
                 NewValue     = Remarks == "Delete" ? null : JsonConvert.SerializeObject(value),
                 Remarks      = Remarks,
                 OperateUser  = operateUser,
             };
             InsertLog("PaintVehicle", log);
         }
     }
 }
        /// <summary>
        /// 更新喷漆车型档次分类
        /// </summary>
        /// <param name="vehicleLevel"></param>
        /// <param name="vehicleIds"></param>
        /// <param name="initalWord"></param>
        /// <param name="operateUser"></param>
        /// <returns></returns>
        public bool UpdatePaintVehicleLevel(string vehicleLevel, string vehicleIds, string initalWord, string operateUser)
        {
            var result = false;

            try
            {
                var oldValue = SeletePaintVehicleByInitalWord(vehicleLevel, initalWord);
                dbScopeManagerCF.CreateTransaction(conn =>
                {
                    if (oldValue.Any())
                    {
                        var isDeleteSuccess = DalSprayPaintVehicle.DeletePaintVehicleDataByInitalWord(conn, vehicleLevel, initalWord);
                        if (isDeleteSuccess)
                        {
                            var toDelete = new List <VehicleLevelLog>();
                            if (!string.IsNullOrWhiteSpace(vehicleIds))
                            {
                                foreach (var item in oldValue)
                                {
                                    if (!vehicleIds.Split(',').Contains(item.VehicleId))
                                    {
                                        toDelete.Add(item);
                                    }
                                }
                            }
                            else
                            {
                                toDelete = oldValue;
                            }
                            if (toDelete.Any())
                            {
                                foreach (var value in toDelete)
                                {
                                    var log = new PaintVehicleOprLog
                                    {
                                        LogType      = "PaintVehicleLevelConfig",
                                        VehicleLevel = value.VehicleLevel,
                                        VehicleId    = value.VehicleId,
                                        OldValue     = JsonConvert.SerializeObject(value),
                                        NewValue     = null,
                                        Remarks      = "Delete",
                                        OperateUser  = operateUser,
                                    };
                                    InsertLog("PaintVehicle", log);
                                }
                            }
                        }
                    }
                    if (!string.IsNullOrWhiteSpace(vehicleIds))
                    {
                        result = DalSprayPaintVehicle.AddPaintVehicleLevel(conn, vehicleLevel, vehicleIds);
                        if (result)
                        {
                            Thread.Sleep(1000);
                            var newValue = SeletePaintVehicleByInitalWord(vehicleLevel, initalWord);
                            var toAdd    = new List <VehicleLevelLog>();
                            foreach (var newData in newValue)
                            {
                                if (!oldValue.Any(p => p.VehicleId.Equals(newData.VehicleId)))
                                {
                                    toAdd.Add(newData);
                                }
                            }
                            if (toAdd.Any())
                            {
                                foreach (var value in toAdd)
                                {
                                    var log = new PaintVehicleOprLog
                                    {
                                        LogType      = "PaintVehicleLevelConfig",
                                        VehicleLevel = value.VehicleLevel,
                                        VehicleId    = value.VehicleId,
                                        OldValue     = null,
                                        NewValue     = JsonConvert.SerializeObject(value),
                                        Remarks      = "Add",
                                        OperateUser  = operateUser,
                                    };
                                    InsertLog("PaintVehicle", log);
                                }
                            }
                        }
                    }
                    else
                    {
                        result = true;
                    }
                });
            }
            catch (Exception ex)
            {
                Logger.Log(Level.Error, ex, "UpdatePaintVehicleLevel");
            }
            return(result);
        }
        /// <summary>
        /// 更新喷漆车型服务
        /// </summary>
        /// <param name="vehicleLevel"></param>
        /// <param name="paintService"></param>
        /// <param name="operateUser"></param>
        /// <returns></returns>
        public bool UpdatePaintVehicleService(string vehicleLevel, string paintService, string operateUser)
        {
            var result            = false;
            var paintServiceModel = new List <PaintService>();

            if (!string.IsNullOrWhiteSpace(paintService))
            {
                paintServiceModel = JsonConvert.DeserializeObject <List <PaintService> >(paintService);
            }
            try
            {
                var oldValue = SelectPaintServiceInfo(vehicleLevel);
                dbScopeManagerCF.CreateTransaction(conn =>
                {
                    if (oldValue.Any())
                    {
                        var isDeleteSuccess = DalSprayPaintVehicle.DeletePaintService(conn, vehicleLevel);
                        var toDelete        = new List <PaintServiceLog>();
                        foreach (var oldData in oldValue)
                        {
                            if (!paintServiceModel.Any(p => p.ServiceId.Equals(oldData.ServiceId)))
                            {
                                toDelete.Add(oldData);
                            }
                        }
                        if (isDeleteSuccess)
                        {
                            foreach (var value in toDelete)
                            {
                                var log = new PaintVehicleOprLog
                                {
                                    LogType      = "PaintVehicleServiceConfig",
                                    VehicleLevel = value.VehicleLevel,
                                    VehicleId    = null,
                                    OldValue     = JsonConvert.SerializeObject(value),
                                    NewValue     = null,
                                    Remarks      = "Delete",
                                    OperateUser  = operateUser,
                                };
                                InsertLog("PaintVehicle", log);
                            }
                        }
                    }
                    if (!string.IsNullOrWhiteSpace(paintService) && paintServiceModel.Any())
                    {
                        foreach (var service in paintServiceModel)
                        {
                            result = DalSprayPaintVehicle.AddPaintVehicleServiceConfig(conn, service);
                        }
                        if (result)
                        {
                            Thread.Sleep(1000);
                            var newValue = SelectPaintServiceInfo(vehicleLevel);
                            var toAdd    = new List <PaintServiceLog>();
                            foreach (var newData in newValue)
                            {
                                if (!oldValue.Any(p => p.ServiceId.Equals(newData.ServiceId)))
                                {
                                    toAdd.Add(newData);
                                }
                            }
                            foreach (var value in toAdd)
                            {
                                var log = new PaintVehicleOprLog
                                {
                                    LogType      = "PaintVehicleServiceConfig",
                                    VehicleLevel = value.VehicleLevel,
                                    VehicleId    = null,
                                    OldValue     = null,
                                    NewValue     = JsonConvert.SerializeObject(value),
                                    Remarks      = "Add",
                                    OperateUser  = operateUser,
                                };
                                InsertLog("PaintVehicle", log);
                            }
                        }
                    }
                    else
                    {
                        result = true;
                    }
                });
            }
            catch (Exception ex)
            {
                Logger.Log(Level.Error, ex, "UpdatePaintVehicleService");
            }
            return(result);
        }