/// <summary>
        /// 转换政策
        /// </summary>
        /// <param name="corpPolicyDetailConfigEntities"></param>
        /// <returns></returns>
        public static CorpPolicyDetailConfigModel Convert(List <CorpPolicyDetailConfigEntity> corpPolicyDetailConfigEntities)
        {
            CorpPolicyDetailConfigModel configModel = new CorpPolicyDetailConfigModel();

            foreach (var config in corpPolicyDetailConfigEntities)
            {
                configModel.Cid      = config.Cid;
                configModel.PolicyId = config.PolicyId;
                if (config.DetailType == "L" && config.PolicyType == "N")
                {
                    configModel.NPolicyValL = config.PolicyVal;
                }
                else if (config.DetailType == "T" && config.PolicyType == "N")
                {
                    configModel.NPolicyValT = config.PolicyVal;
                }
                else if (config.DetailType == "R" && config.PolicyType == "N")
                {
                    configModel.NPolicyValR = config.PolicyVal;
                }
                else if (config.DetailType == "I" && config.PolicyType == "N")
                {
                    configModel.NPolicyValI = config.PolicyVal;
                }
                else if (config.DetailType == "L" && config.PolicyType == "I")
                {
                    configModel.IPolicyValL = config.PolicyVal;
                }
                else if (config.DetailType == "T" && config.PolicyType == "I")
                {
                    configModel.IPolicyValT = config.PolicyVal;
                }
                else if (config.DetailType == "R" && config.PolicyType == "I")
                {
                    configModel.IPolicyValR = config.PolicyVal;
                }
                else if (config.DetailType == "I" && config.PolicyType == "I")
                {
                    configModel.IPolicyValI = config.PolicyVal;
                }
                else if (config.DetailType == "Y" && config.PolicyType == "N")
                {
                    configModel.NPolicyValY = config.PolicyVal;
                }
                else if (config.DetailType == "Q" && config.PolicyType == "T")
                {
                    configModel.TPolicyValQ = config.PolicyVal;
                }
                else if (config.DetailType == "S" && config.PolicyType == "T")
                {
                    configModel.TPolicyValS = config.PolicyVal;
                }
                else if (config.DetailType == "M" && config.PolicyType == "T")
                {
                    configModel.TPolicyValM = config.PolicyVal;
                }
            }

            return(configModel);
        }
        public CorpPolicyDetailConfigModel GetCorpPolicyById(int policyId, string corpId, string policyType)
        {
            if (string.IsNullOrEmpty(corpId))
            {
                return(null);
            }
            if (policyId == 0)
            {
                return(null);
            }

            List <CorpPolicyDetailConfigEntity> corpPolicyDetailConfigEntities =
                _corpPolicyDetailConfigDal.Query <CorpPolicyDetailConfigEntity>(
                    n => n.PolicyId == policyId, true).ToList();
            CorpPolicyDetailConfigModel policyModel = CorpPolicyConvertFactory.Convert(corpPolicyDetailConfigEntities);

            List <ChoiceReasonEntity> choiceReasonEntities =
                _choiceReasonDal.Query <ChoiceReasonEntity>(
                    n => n.IsDel != "T" && n.CorpID == corpId && n.PolicyType == policyType, true)
                .ToList();

            if (choiceReasonEntities != null && choiceReasonEntities.Count > 0)
            {
                policyModel.PolicyReason     = choiceReasonEntities.Select(n => n.Reason).ToList();
                policyModel.PolicyReasonList = (from n in choiceReasonEntities
                                                select new ChoiceReasonModel()
                {
                    Id = n.ID,
                    Reason = n.Reason,
                    PolicyType = n.PolicyType
                }).ToList();
            }

            return(policyModel);
        }
        public CorpPolicyDetailConfigModel GetCorpPolicy(int cid)
        {
            CorpPolicyDetailConfigModel policyModel = null;
            //1.获取客户信息
            CustomerInfoEntity customerInfoEntity = _customerDal.Find <CustomerInfoEntity>(cid);

            if (!customerInfoEntity.CorpDepartID.HasValue)
            {
                return(null);
            }
            List <CorporationEntity> corporationModels = _corporationDal.Query <CorporationEntity>(n => n.CorpId == customerInfoEntity.CorpID, true).ToList();

            if (corporationModels == null || corporationModels.Count == 0)
            {
                return(null);
            }


            //2.获取部门信息
            CorpDepartmentEntity corpDepartmentEntity =
                _corpDepartmentDal.Find <CorpDepartmentEntity>(customerInfoEntity.CorpDepartID.Value);

            if (!corpDepartmentEntity.PolicyId.HasValue)
            {
                return(null);
            }
            //3.获取部门上的差旅政策信息
            List <CorpPolicyDetailConfigEntity> corpPolicyDetailConfigEntities =
                _corpPolicyDetailConfigDal.Query <CorpPolicyDetailConfigEntity>(
                    n => n.PolicyId == corpDepartmentEntity.PolicyId.Value, true).ToList();

            policyModel = CorpPolicyConvertFactory.Convert(corpPolicyDetailConfigEntities);
            policyModel.CorpDepartmentModel = Mapper.Map <CorpDepartmentEntity, CorpDepartmentModel>(corpDepartmentEntity);
            policyModel.CorpModel           = Mapper.Map <CorporationEntity, CorporationModel>(corporationModels[0]);
            policyModel.CustomerInfoModel   = Mapper.Map <CustomerInfoEntity, CustomerInfoModel>(customerInfoEntity);

            List <ChoiceReasonEntity> choiceReasonEntities = null;

            if (!string.IsNullOrEmpty(corpDepartmentEntity.CorpId))
            {
                choiceReasonEntities =
                    _choiceReasonDal.Query <ChoiceReasonEntity>(
                        n => n.IsDel != "T" && n.CorpID == corpDepartmentEntity.CorpId, true).ToList();
            }
            if (choiceReasonEntities != null)
            {
                policyModel.PolicyReason     = choiceReasonEntities.Select(n => n.Reason).ToList();
                policyModel.PolicyReasonList = (from n in choiceReasonEntities
                                                select new ChoiceReasonModel()
                {
                    Id = n.ID,
                    Reason = n.Reason
                }).ToList();
            }
            return(policyModel);
        }
Beispiel #4
0
        /// <summary>
        /// 根据项目成本中心对应的差旅政策信息
        /// </summary>
        /// <param name="projectId"></param>
        /// <param name="isAllowUserInsurance"></param>
        /// <returns></returns>
        public List <CorpPolicyChangeModel> GetCorpPolicyChangeInfoByProjectId(int projectId,
                                                                               int isAllowUserInsurance)
        {
            List <int> policyIdList =
                _corpPolicyConfigProjectDal.Query <CorpPolicyConfigProjectEntity>(
                    n => projectId == n.ProjectId, true).Select(n => n.PolicyId).ToList();//根据项目Id获取对应的差标信息


            if (policyIdList == null || policyIdList.Count == 0)
            {
                return(null);
            }


            List <CorpPolicyChangeModel> resultList = new List <CorpPolicyChangeModel>();

            List <CorpPolicyConfigEntity> policyList = _corpPolicyConfigDal.Query <CorpPolicyConfigEntity>(
                n => policyIdList.Contains(n.PolicyId) && !string.IsNullOrEmpty(n.IsDel) && n.IsDel.ToUpper() == "F",
                true).ToList();

            foreach (var entity in policyList)
            {
                List <CorpPolicyDetailConfigEntity> policyDetailList =
                    _corpPolicyDetailConfigDal.Query <CorpPolicyDetailConfigEntity>(
                        n => n.PolicyId == entity.PolicyId, true).ToList();
                CorpPolicyDetailConfigModel policyModel = CorpPolicyConvertFactory.Convert(policyDetailList);
                if (isAllowUserInsurance == 0)//如果当前公司个性化不许购买保险,则统一设置F;如果允许购买保险,则看差标允许不允许
                {
                    policyModel.NPolicyValI = "F";
                }
                resultList.Add(new CorpPolicyChangeModel()
                {
                    PolicyId           = entity.PolicyId,
                    PolicyName         = entity.PolicyName,
                    ViolateNPolicyValL = policyModel.NPolicyValL,
                    ViolateNPolicyValT = policyModel.NPolicyValT,
                    ViolateNPolicyValR = policyModel.NPolicyValR,
                    ViolateNPolicyValY = policyModel.NPolicyValY,
                    ViolateNPolicyValI = policyModel.NPolicyValI,
                    ViolateTPolicyValQ = policyModel.TPolicyValQ,
                    ViolateTPolicyValM = policyModel.TPolicyValM,
                    ViolateTPolicyValS = policyModel.TPolicyValS
                });
            }



            return(resultList);
        }
Beispiel #5
0
        public SearchFlightResponseViewModel Search(SearchFlightRequestViewModel request)
        {
            if (request.Cid == 0)
            {
                throw new Exception("请传入客户Id");
            }

            //2.根据Cid查询客户信息
            CustomerModel customerModel = _getCustomerServiceBll.GetCustomerByCid(request.Cid);

            //调用查询该客户的差旅政策服务
            CorpPolicyDetailConfigModel poilConfigModel =
                _getCustomerCorpPolicyServiceBll.GetCorpPolicyById(request.PolicyId ?? 0, customerModel.CorpID, "N");

            SearchFlightQueryModel query = new SearchFlightQueryModel()
            {
                AirlineNo         = request.AirlineNo,
                Aport             = request.Aport,
                TackOffTime       = request.TackOffTime,
                Dport             = request.Dport,
                CorpPolicy        = poilConfigModel,
                CardNoList        = request.CardNoList,
                PassengerNameList = request.PassengerNameList,
                CorpId            = customerModel.CorpID,
                OrderSource       = request.OrderSource,
                IsShareFly        = customerModel.Corporation.IsShareFly,
                IsXYPrice         = customerModel.Corporation.IsXYPrice,
                IsAllSeat         = customerModel.Corporation.IsAllSeat,
                IsHeightSeat      = customerModel.Corporation.IsHeightSeat
            };

            //调用查询航班服务
            List <SearchFlightModel> searchFlightModels = _searchFlightServiceBll.SearchFlight(query);

            SearchFlightResponseViewModel viewModel = new SearchFlightResponseViewModel();

            viewModel.FlightList       = Mapper.Map <List <SearchFlightModel>, List <SearchFlightViewModel> >(searchFlightModels);
            viewModel.AirlineQuery     = searchFlightModels.Select(n => n.AirlineDesc).Distinct().ToList();
            viewModel.AportNameQuery   = searchFlightModels.Select(n => n.AportName).Distinct().ToList();
            viewModel.DportNameQuery   = searchFlightModels.Select(n => n.DportName).Distinct().ToList();
            viewModel.TackOffTimeQuery = searchFlightModels.Select(n => n.TackOffDate).Distinct().ToList();
            viewModel.ClassQuery       = searchFlightModels.SelectMany(n => n.DetailList).Select(n => n.ClassDesc).Distinct().ToList();
            viewModel.PolicyReason     = poilConfigModel?.PolicyReason;
            return(viewModel);
        }
        public SearchTrainResponseViewModel SearchTrain(SearchTrainRequestViewModel request)
        {
            if (request.Cid == 0)
            {
                throw new Exception("请传入客户Id");
            }

            //2.根据Cid查询客户信息
            CustomerModel customerModel = _getCustomerServiceBll.GetCustomerByCid(request.Cid);

            string notAllowUserTrainCorpId = AppSettingsHelper.GetAppSettings(AppSettingsEnum.NotAllowUserTrain);

            if (!string.IsNullOrEmpty(customerModel.CorpID) && notAllowUserTrainCorpId.Contains(customerModel.CorpID.ToUpper()))
            {
                throw new Exception("当前公司不能使用火车票功能");
            }

            //调用查询该客户的差旅政策服务
            CorpPolicyDetailConfigModel poilConfigModel =
                _getCustomerCorpPolicyServiceBll.GetCorpPolicyById(request.PolicyId ?? 0, customerModel.CorpID, "T");

            TraQueryTrainModel queryTrainModel = new TraQueryTrainModel()
            {
                from_station  = request.FromStation,
                needdistance  = request.NeedDistance,
                purpose_codes = request.PurposeCodes,
                to_station    = request.ToStation,
                train_date    = request.TrainDate,
                CorpPolicy    = poilConfigModel,
                CorpId        = customerModel.CorpID,
                IsTraAllSeat  = customerModel.Corporation == null ? 0 : customerModel.Corporation.IsTraAllSeat
            };

            List <TraTravelInfoModel>    traTravelInfoModels = _searchTrainServiceBll.DoQueryTrain(queryTrainModel);
            SearchTrainResponseViewModel responseViewModel   = new SearchTrainResponseViewModel();

            List <TraTravelInfoViewModel> travelInfo = new List <TraTravelInfoViewModel>();
            List <string> formStation = new List <string>();
            List <string> toStation   = new List <string>();
            List <string> trainType   = new List <string>();

            foreach (var item in traTravelInfoModels)
            {
                #region 循环
                if (!string.IsNullOrEmpty(item.train_type))
                {
                    trainType.Add(item.train_type);
                }
                if (!string.IsNullOrEmpty(item.from_station_name))
                {
                    formStation.Add(item.from_station_name);
                }
                if (!string.IsNullOrEmpty(item.to_station_name))
                {
                    toStation.Add(item.to_station_name);
                }
                TraTravelInfoViewModel travelInfoViewModel = new TraTravelInfoViewModel()
                {
                    AccessByidCard   = item.access_byidcard,
                    ArriveDays       = item.arrive_days,
                    ArriveTime       = item.arrive_time,
                    CanBuyNow        = item.can_buy_now,
                    DetailList       = AutoMapperHelper.DoMapList <TraTravelInfoDetailModel, TraTravelInfoDetailViewModel>(item.DetailList).ToList(),
                    Distance         = item.distance,
                    EndStationName   = item.end_station_name,
                    FromStationCode  = item.from_station_code,
                    FromStationName  = item.from_station_name,
                    Note             = item.note,
                    RunTime          = item.run_time,
                    RunTimeMinute    = item.run_time_minute,
                    SaleDateTime     = item.sale_date_time,
                    StartStationName = item.start_station_name,
                    StartTime        = item.start_time,
                    ToStationCode    = item.to_station_code,
                    ToStationName    = item.to_station_name,
                    TrainCode        = item.train_code,
                    TrainNo          = item.train_no,
                    TrainStartDate   = Convert.ToDateTime(queryTrainModel.train_date).ToString("yyyy-MM-dd"),//item.train_start_date,
                    TrainType        = item.train_type,
                    OnTrainDate      = request.TrainDate
                };
                travelInfo.Add(travelInfoViewModel);
                #endregion
            }

            responseViewModel.TravelInfo   = travelInfo;
            responseViewModel.FormStation  = formStation.Distinct().ToList();
            responseViewModel.ToStation    = toStation.Distinct().ToList();
            responseViewModel.TrainType    = trainType.Distinct().ToList();
            responseViewModel.PolicyReason = poilConfigModel?.PolicyReason;
            return(responseViewModel);
        }
Beispiel #7
0
        /// <summary>
        /// 产生差旅政策信息
        /// </summary>
        /// <param name="cid"></param>
        /// <param name="departId"></param>
        /// <param name="isAllowUserInsurance"></param>
        /// <returns></returns>
        public List <CorpPolicyChangeModel> GetCorpPolicyChangeInfo(int cid, int departId, int isAllowUserInsurance)
        {
            List <CorpPolicyChangeModel> resultList = null;

            #region 先根据cid查找员工的差旅政策
            List <CorpPolicyConfigCustomerEntity> corpPolicyConfigCustomerList =
                _corpPolicyConfigCustomerDal.Query <CorpPolicyConfigCustomerEntity>(n => n.Cid == cid, true).ToList();
            if (corpPolicyConfigCustomerList != null && corpPolicyConfigCustomerList.Count > 0)
            {
                List <int> policyIdList = new List <int>();
                corpPolicyConfigCustomerList.ForEach(n => { policyIdList.Add(n.PolicyId); });
                //获取政策信息
                List <CorpPolicyConfigEntity> policyList = _corpPolicyConfigDal.Query <CorpPolicyConfigEntity>(
                    n => policyIdList.Contains(n.PolicyId) && !string.IsNullOrEmpty(n.IsDel) && n.IsDel.ToUpper() == "F",
                    true).ToList();

                resultList = new List <CorpPolicyChangeModel>();
                foreach (var entity in corpPolicyConfigCustomerList)
                {
                    var policy = policyList.Find(n => n.PolicyId == entity.PolicyId);
                    if (policy != null)
                    {
                        List <CorpPolicyDetailConfigEntity> policyDetailList =
                            _corpPolicyDetailConfigDal.Query <CorpPolicyDetailConfigEntity>(
                                n => n.PolicyId == entity.PolicyId, true).ToList();
                        CorpPolicyDetailConfigModel policyModel = CorpPolicyConvertFactory.Convert(policyDetailList);

                        if (isAllowUserInsurance == 0)//如果当前公司个性化不许购买保险,则统一设置F;如果允许购买保险,则看差标允许不允许
                        {
                            policyModel.NPolicyValI = "F";
                        }

                        resultList.Add(new CorpPolicyChangeModel()
                        {
                            PolicyId           = entity.PolicyId,
                            PolicyName         = policy.PolicyName,
                            ViolateNPolicyValL = policyModel.NPolicyValL,
                            ViolateNPolicyValT = policyModel.NPolicyValT,
                            ViolateNPolicyValR = policyModel.NPolicyValR,
                            ViolateNPolicyValY = policyModel.NPolicyValY,
                            ViolateNPolicyValI = policyModel.NPolicyValI,
                            ViolateTPolicyValQ = policyModel.TPolicyValQ,
                            ViolateTPolicyValM = policyModel.TPolicyValM,
                            ViolateTPolicyValS = policyModel.TPolicyValS
                        });
                    }
                }
                return(resultList);
            }

            #endregion

            #region 如果没有政策,则查找部门的差旅政策
            List <CorpPolicyConfigDepartmentEntity> corpPolicyConfigDepartmentEntities =
                _corpPolicyConfigDepartmentDal.Query <CorpPolicyConfigDepartmentEntity>(n => n.DepartmentId == departId,
                                                                                        true)
                .ToList();
            if (corpPolicyConfigDepartmentEntities != null && corpPolicyConfigDepartmentEntities.Count > 0)
            {
                List <int> policyIdList = new List <int>();
                corpPolicyConfigDepartmentEntities.ForEach(n => { policyIdList.Add(n.PolicyId); });

                //获取政策信息
                List <CorpPolicyConfigEntity> policyList = _corpPolicyConfigDal.Query <CorpPolicyConfigEntity>(
                    n => policyIdList.Contains(n.PolicyId) && !string.IsNullOrEmpty(n.IsDel) && n.IsDel.ToUpper() == "F",
                    true).ToList();
                resultList = new List <CorpPolicyChangeModel>();

                foreach (var entity in corpPolicyConfigDepartmentEntities)
                {
                    var policy = policyList.Find(n => n.PolicyId == entity.PolicyId);
                    if (policy != null)
                    {
                        List <CorpPolicyDetailConfigEntity> policyDetailList =
                            _corpPolicyDetailConfigDal.Query <CorpPolicyDetailConfigEntity>(
                                n => n.PolicyId == entity.PolicyId, true).ToList();
                        CorpPolicyDetailConfigModel policyModel = CorpPolicyConvertFactory.Convert(policyDetailList);
                        if (isAllowUserInsurance == 0)//如果当前公司个性化不许购买保险,则统一设置F;如果允许购买保险,则看差标允许不允许
                        {
                            policyModel.NPolicyValI = "F";
                        }
                        resultList.Add(new CorpPolicyChangeModel()
                        {
                            PolicyId           = entity.PolicyId,
                            PolicyName         = policy.PolicyName,
                            ViolateNPolicyValL = policyModel.NPolicyValL,
                            ViolateNPolicyValT = policyModel.NPolicyValT,
                            ViolateNPolicyValR = policyModel.NPolicyValR,
                            ViolateNPolicyValY = policyModel.NPolicyValY,
                            ViolateNPolicyValI = policyModel.NPolicyValI,
                            ViolateTPolicyValQ = policyModel.TPolicyValQ,
                            ViolateTPolicyValM = policyModel.TPolicyValM,
                            ViolateTPolicyValS = policyModel.TPolicyValS
                        });
                    }
                }
                return(resultList);
            }
            #endregion

            //都没找到则返回null
            return(null);
        }
        public List <SearchFlightModel> SearchFlight(SearchFlightQueryModel query)
        {
            List <SearchFlightModel> ibeFlightModels = _checkWhitelFlightSearch.SearchFlight(query);

            if (string.IsNullOrEmpty(query.CorpId)) //没有公司Id的直接返回ibe航班信息
            {
                return(ibeFlightModels);
            }
            CorpPolicyDetailConfigModel policyModel = query.CorpPolicy;


            #region 将差旅政策包装到IBE航班信息

            List <SearchFlightModel> flightTempList = new List <SearchFlightModel>();
            #region 没有差旅政策
            if (policyModel == null)
            {
                foreach (var model in ibeFlightModels)
                {
                    foreach (var detail in model.DetailList)
                    {
                        detail.IsViolate              = "F";
                        detail.ViolateNPolicyValL     = "F";
                        detail.ViolateNPolicyValLDesc = "";
                        detail.ViolateNPolicyValT     = "F";
                        detail.ViolateNPolicyValTDesc = "";
                        detail.ViolateNPolicyValR     = "F";
                        detail.ViolateNPolicyValRDesc = "";
                        detail.ViolateNPolicyValY     = "F";
                        detail.ViolateNPolicyValYDesc = "F";
                    }
                    flightTempList.Add(model);
                }
                return(flightTempList);
            }
            #endregion
            #region 存在差旅政策
            #region 判断
            //个性化设置 是否显示全部舱位 如果选否,按照下一个“最高舱位限制”政策的舱位
            if ((query.IsAllSeat ?? 0) == 0)
            {
                if (query.IsHeightSeat == 1)
                {
                    LimitClassType = 1;//(最高仓位限制)
                }
                else if (query.IsHeightSeat == 0)
                {
                    LimitClassType = 2;//一旦限制的仓位买完了,显示上一级仓位
                }
            }


            int?    nPolicyValLValue = null;                                                       //国内机票低价航班为出发时间前后XX分钟内最低航班 //判断明细
            int?    nPolicyValTValue = null;                                                       //国内机票提前预定 提前XXX天以上预定航班 //判断主体
            decimal?nPolicyValRValue = null;                                                       // 国内机票XXX折扣限制  //判断明细
            string  nPolicyValY      = string.Empty;                                               //国内机票仓等限制 Y经济舱/C公务舱/F头等舱  //判断明细
            if (!string.IsNullOrEmpty(policyModel.NPolicyValL) && policyModel.NPolicyValL != "-1") //存在该政策,并且非不受限制
            {
                nPolicyValLValue = Convert.ToInt32(policyModel.NPolicyValL);
            }
            if (!string.IsNullOrEmpty(policyModel.NPolicyValT) && policyModel.NPolicyValT != "-1")
            {
                nPolicyValTValue = Convert.ToInt32(policyModel.NPolicyValT);
            }
            if (!string.IsNullOrEmpty(policyModel.NPolicyValR) && policyModel.NPolicyValR != "-1")
            {
                nPolicyValRValue = Convert.ToDecimal(policyModel.NPolicyValR);
            }
            if (!string.IsNullOrEmpty(policyModel.NPolicyValY))
            {
                nPolicyValY = policyModel.NPolicyValY;
            }

            #endregion

            string isViolate              = "F";
            string violateNPolicyValT     = "F";
            string violateNPolicyValTDesc = string.Empty;

            #region 提前预定判断政策

            if (nPolicyValTValue.HasValue)
            {
                double day = (query.TackOffTime - Convert.ToDateTime(DateTime.Now.ToShortDateString())).TotalDays;
                if (day < nPolicyValTValue.Value)
                {
                    isViolate          = "T";
                    violateNPolicyValT = "T";
                    if (query.CorpId == "JYJR")
                    {
                        violateNPolicyValTDesc = "航班预定需需提前" + nPolicyValTValue.Value + "天以上航班预定";
                    }
                    else
                    {
                        violateNPolicyValTDesc = "提前" + nPolicyValTValue.Value + "天以上预定航班";
                    }
                }
            }

            #endregion
            foreach (var model in ibeFlightModels)
            {
                foreach (var detail in model.DetailList)
                {
                    detail.ViolateNPolicyValT     = violateNPolicyValT;
                    detail.ViolateNPolicyValTDesc = violateNPolicyValTDesc;

                    #region 折扣限制政策判断

                    if (nPolicyValRValue.HasValue && Convert.ToDecimal(detail.Rate) > nPolicyValRValue)
                    {
                        detail.ViolateNPolicyValR     = "T";
                        detail.ViolateNPolicyValRDesc = nPolicyValRValue + "折以下的航班";
                    }
                    else
                    {
                        detail.ViolateNPolicyValR     = "F";
                        detail.ViolateNPolicyValRDesc = "";
                    }

                    #endregion

                    #region 仓等限制政策判断

                    if (!string.IsNullOrEmpty(nPolicyValY))
                    {
                        if (detail.FatherClass == "J")
                        {
                            detail.FatherClass = "C";
                        }
                        if (nPolicyValY != detail.FatherClass)
                        {
                            detail.ViolateNPolicyValY     = "T";
                            detail.ViolateNPolicyValYDesc = "未预定" +
                                                            (nPolicyValY == "Y"
                                                                ? "经济舱"
                                                                : nPolicyValY == "C" ? "公务舱" : "头等舱");
                        }
                        else
                        {
                            detail.ViolateNPolicyValY     = "F";
                            detail.ViolateNPolicyValYDesc = "";
                        }
                        #region 隐藏仓位
                        var classIndex = nPolicyValY == "Y"
                                    ? 1
                                    : nPolicyValY == "C" ? 2 : 3;

                        if (LimitClassType == 1)
                        {
                            model.DetailList = model.DetailList.Where(a => (a.ClassDesc.Contains("经济舱") ? 1 : ((a.ClassDesc.Contains("公务舱") || a.ClassDesc.Contains("商务舱")) ? 2 : 3)) <= classIndex).ToList();
                        }
                        else if (LimitClassType == 2)
                        {
                            //如果最高仓位买完显示全部仓位
                            int count = model.DetailList.FindAll(n => n.ClassIndex <= classIndex).Count;//所有仓位到限制最高仓位的数量
                            if (count > 0)
                            {
                                model.DetailList = model.DetailList.Where(a => (a.ClassDesc.Contains("经济舱") ? 1 : ((a.ClassDesc.Contains("公务舱") || a.ClassDesc.Contains("商务舱")) ? 2 : 3)) <= classIndex).ToList();
                            }
                        }
                        #endregion
                    }
                    else
                    {
                        detail.ViolateNPolicyValY     = "F";
                        detail.ViolateNPolicyValYDesc = "";
                    }

                    #endregion

                    #region 航班前后XX分钟内是否最低价格政策判断

                    if (nPolicyValLValue.HasValue)
                    {
                        decimal?minPrice = GetMinSalePrice(Convert.ToDateTime(model.TackOffTime), nPolicyValLValue.Value, ibeFlightModels, Convert.ToDecimal(detail.SalePrice));
                        if (minPrice.HasValue)
                        {
                            detail.ViolateNPolicyValL     = "T";
                            detail.ViolateNPolicyValLDesc = "未选择前后" + nPolicyValLValue.Value + "分钟内最低价格为" +
                                                            minPrice.Value.ToString("0");
                            detail.MinSalePrice = Convert.ToDecimal(minPrice.Value.ToString("0"));
                        }
                        else
                        {
                            detail.ViolateNPolicyValL     = "F";
                            detail.ViolateNPolicyValLDesc = "";
                        }
                    }
                    else
                    {
                        detail.ViolateNPolicyValL     = "F";
                        detail.ViolateNPolicyValLDesc = "";
                    }

                    #endregion

                    if (isViolate == "T")
                    {
                        detail.IsViolate = "T";
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(detail.ViolateNPolicyValRDesc) &&
                            string.IsNullOrEmpty(detail.ViolateNPolicyValYDesc) &&
                            string.IsNullOrEmpty(detail.ViolateNPolicyValLDesc))
                        {
                            detail.IsViolate = "F";
                        }
                        else
                        {
                            detail.IsViolate = "T";
                        }
                    }
                }
                if (model.DetailList != null && model.DetailList.Any())
                {
                    flightTempList.Add(model);
                }
            }
            #endregion

            #endregion

            return(flightTempList);
        }
Beispiel #9
0
        public List <TraTravelInfoModel> SearchTrain(TraQueryTrainModel query)
        {
            List <TraTravelInfoModel> traTravelInfoModels = _searchTrainBll.SearchTrain(query);

            if (string.IsNullOrEmpty(query.CorpId)) //没有公司Id的直接返回ibe航班信息
            {
                return(traTravelInfoModels);
            }
            CorpPolicyDetailConfigModel policyModel = query.CorpPolicy;

            #region 将差旅政策包装到火车车次信息

            List <TraTravelInfoModel> traTravelInfoTempList = new List <TraTravelInfoModel>();
            #region 没有差旅政策
            if (policyModel == null)
            {
                return(traTravelInfoModels);
            }
            #endregion

            #region 存在差旅政策

            List <string> qTrainTypeList = new List <string>()
            {
                "C", "D", "G"
            };//快车类型
            List <string> cTrainTypeList = new List <string>()
            {
                "K", "T", "Z", "L", "A", "Y", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
            };//普车类型

            List <string> seatTypeList = new List <string>()
            {
                "硬卧", "动卧", "软卧", "高级软卧"
            };


            foreach (var traTravelInfoModel in traTravelInfoModels)
            {
                if (traTravelInfoModel.DetailList == null || traTravelInfoModel.DetailList.Count == 0)
                {
                    continue;
                }
                List <TraTravelInfoDetailModel> detailList = new List <TraTravelInfoDetailModel>();
                //如果个性化设置中设置选择全部坐席 不进行政策中坐席筛选
                if ((query.IsTraAllSeat ?? 0) == 1)
                {
                    detailList.AddRange(traTravelInfoModel.DetailList);
                }
                else
                {
                    foreach (var traTravelInfoDetailModel in traTravelInfoModel.DetailList)
                    {
                        int p2 = (from n in _seatSortedList
                                  where n.Value == traTravelInfoDetailModel.SeatName
                                  select n.Key).FirstOrDefault();

                        if (!string.IsNullOrEmpty(policyModel.TPolicyValQ) &&
                            !string.IsNullOrEmpty(traTravelInfoModel.train_type) &&
                            qTrainTypeList.Contains(traTravelInfoModel.train_type) && !traTravelInfoDetailModel.SeatName.Contains("卧")) //快车限制
                        {
                            int p1 = (from n in _seatSortedList
                                      where n.Value == policyModel.TPolicyValQ
                                      select n.Key).FirstOrDefault();//标准

                            if (p1 < p2)
                            {
                                traTravelInfoDetailModel.ViolateTPolicyValQ     = "T";
                                traTravelInfoDetailModel.ViolateTPolicyValQDesc = "快车席别最高限制为" + policyModel.TPolicyValQ;
                            }
                        }
                        if (!string.IsNullOrEmpty(policyModel.TPolicyValM) &&
                            !string.IsNullOrEmpty(traTravelInfoModel.train_type) &&
                            cTrainTypeList.Contains(traTravelInfoModel.train_type) && !traTravelInfoDetailModel.SeatName.Contains("卧"))//普车限制
                        {
                            int p1 = (from n in _seatSortedList
                                      where n.Value == policyModel.TPolicyValM
                                      select n.Key).FirstOrDefault();//标准
                            if (p1 < p2)
                            {
                                traTravelInfoDetailModel.ViolateTPolicyValM     = "T";
                                traTravelInfoDetailModel.ViolateTPolicyValMDesc = "普车/其他最高限制为" + policyModel.TPolicyValM;
                            }
                        }
                        if (!string.IsNullOrEmpty(policyModel.TPolicyValS) && seatTypeList.Contains(traTravelInfoDetailModel.SeatName) && traTravelInfoDetailModel.SeatName.Contains("卧"))//卧铺限制
                        {
                            if (policyModel.TPolicyValS == "99")
                            {
                                traTravelInfoDetailModel.ViolateTPolicyValS     = "T";
                                traTravelInfoDetailModel.ViolateTPolicyValSDesc = "最高卧铺限制为不可乘坐卧铺";
                            }
                            else
                            {
                                int p1 = (from n in _seatSortedList
                                          where n.Value == policyModel.TPolicyValS
                                          select n.Key).FirstOrDefault();//标准
                                if (p1 < p2)
                                {
                                    traTravelInfoDetailModel.ViolateTPolicyValS     = "T";
                                    traTravelInfoDetailModel.ViolateTPolicyValSDesc = "最高卧铺限制为" + policyModel.TPolicyValS;
                                }
                            }
                        }

                        if (traTravelInfoDetailModel.ViolateTPolicyValQ == "T" ||
                            traTravelInfoDetailModel.ViolateTPolicyValM == "T" ||
                            traTravelInfoDetailModel.ViolateTPolicyValS == "T")
                        {
                            traTravelInfoDetailModel.IsViolate = "T";
                        }
                        else
                        {
                            detailList.Add(traTravelInfoDetailModel);
                        }
                    }
                }

                if (detailList.Count > 0)
                {
                    traTravelInfoModel.DetailList = detailList;
                    traTravelInfoTempList.Add(traTravelInfoModel);
                }
            }
            #endregion

            #endregion

            return(traTravelInfoTempList);
        }