public override bool ActionValidate(AddOrderAbstractContext context) { List <int> pidList = context.AddRetModApplyModel.DetailList.Select(n => n.Pid).ToList(); List <int> sequenceList = context.AddRetModApplyModel.DetailList.Select(n => n.Sequence).ToList(); List <string> orderStatusList = new List <string>() { "C" }; int count = (from flight in context.DbContext.Set <FltRetModFlightApplyEntity>() join apply in context.DbContext.Set <FltRetModApplyEntity>() on flight.Rmid equals apply.Rmid into c from apply in c.DefaultIfEmpty() where !orderStatusList.Contains(apply.OrderStatus) && pidList.Contains(flight.Pid) && sequenceList.Contains(flight.Sequence) && apply.OrderType.ToUpper() == "R" select flight).Count(); if (count > 0) { throw new Exception("已经申请退票,不能重复提交!"); } this.NextNode?.ActionValidate(context); return(true); }
public override bool ActionValidate(AddOrderAbstractContext context) { if (!context.AddOrderModel.IsCheckUnUsedTicketNo) { this.NextNode?.ActionValidate(context); return(true); } List <string> passengerNameList = context.AddOrderModel.PassengerList.Select(n => n.Name).Distinct().ToList(); string message = string.Empty; foreach (var fltFlightModel in context.AddOrderModel.FlightList) { string temp = GetUnTicketNo(fltFlightModel.Dport, fltFlightModel.Aport, context.AddOrderModel.Customer?.CorpID, passengerNameList, context.DbContext, fltFlightModel.FlightNo.Substring(0, 2)); if (!string.IsNullOrEmpty(temp)) { message += string.Format(",第{0}程,{1}存在未使用的机票", fltFlightModel.Sequence, temp); } } if (!string.IsNullOrEmpty(message)) { throw new MojoryException(MojoryApiResponseCode.HasUnUsedTicketNo, message.Substring(1)); } this.NextNode?.ActionValidate(context); return(true); }
public override bool ActionValidate(AddOrderAbstractContext context) { AddCorpOrderCustomer addCorpOrderCustomer = null; if (context.AddRetModApplyModel.Customer.Corporation?.IsAmplitudeCorp == "T") { if (context.AddRetModApplyModel.Customer.IsMaster == "T") { addCorpOrderCustomer = new AddCorpOrderBookingCustomer(); } else { if (context.AddRetModApplyModel.Customer.IsCheck == "T") { addCorpOrderCustomer = new AddCorpOrderNeedCheckCustomer(); } else { addCorpOrderCustomer = new AddCorpOrderNotNeedCheckCustomer(); } } } if (addCorpOrderCustomer != null) { IAddCorpRetApplyCustomerVisitor visitor = new AddCorpRetApplyCustomerVisitor(); addCorpOrderCustomer.AddModApply = context.AddRetModApplyModel; context.AddRetModApplyModel = addCorpOrderCustomer.AddCorpRetApplyValidate(visitor); } this.NextNode?.ActionValidate(context); return(true); }
public override bool ActionValidate(AddOrderAbstractContext context) { if (context.AddOrderModel != null) { context.AddOrderModel.TravelType = 0; context.AddOrderModel.BalanceType = 1; } this.NextNode?.ActionValidate(context); return(true); }
/// <summary> /// 判断当前订单:南航最多支持一张订单3人 /// </summary> /// <param name="context"></param> /// <returns></returns> public override bool ActionValidate(AddOrderAbstractContext context) { int passengerCount = context.AddOrderModel.PassengerList.Select(n => n.Name).Count(); List <string> flightList = context.AddOrderModel.FlightList.Select(n => n.FlightNo.ToUpper()).Distinct().ToList(); if (flightList.Contains("CZ") && passengerCount > 3) { throw new Exception("南航最多支持一张订单3人"); } this.NextNode?.ActionValidate(context); return(true); }
private void B2GBuyRemark(AddOrderAbstractContext context, Dictionary <int, string> b2GDictionary) { if (b2GDictionary.Count > 0) { if (context.AddOrderModel.FlightList.Count == 1) { context.AddOrderModel.BuyRemark += ",请B2G采购"; } else { foreach (var d in b2GDictionary) { context.AddOrderModel.BuyRemark += string.Format(",第{0}段,请B2G采购", d.Key); } } } }
private void B2GOrderRemark(AddOrderAbstractContext context, Dictionary <int, bool> hasB2GPriceDictionary) { if (hasB2GPriceDictionary.Count > 0) { if (context.AddOrderModel.FlightList.Count == 1) { context.AddOrderModel.BuyRemark += ",该航段存在B2G价格,请B2G采购"; context.AddOrderModel.Remark += ",该航段存在B2G价格,请B2G采购"; } else { foreach (var d in hasB2GPriceDictionary) { context.AddOrderModel.BuyRemark += string.Format(",第{0}段存在B2G价格,请B2G采购", d.Key); context.AddOrderModel.Remark += string.Format(",第{0}段存在B2G价格,请B2G采购", d.Key); } } } }
public override bool ActionValidate(AddOrderAbstractContext context) { //1.航段合计 if (context.AddOrderModel.FlightList.Count == 0) { throw new Exception("订单航程信息异常"); } decimal flightAmount = context.AddOrderModel.FlightList.Sum( n => (n.SalePrice ?? 0) + n.TaxFee + (n.OilFee ?? 0) + (n.ServiceFee ?? 0)); //2.保险合计 decimal insuranceAmount = context.AddOrderModel.PassengerList.Sum(n => (n.Insurance ?? 0) * (n.InsuranceCount ?? 0)); //3.人数 int passengerCount = context.AddOrderModel.PassengerList.Count; if (passengerCount == 0) { throw new Exception("订单人数异常"); } //订单合计 decimal totalAmount = flightAmount * passengerCount + insuranceAmount + context.AddOrderModel.CreditcardfeeAmount + context.AddOrderModel.SendTicketAmount + context.AddOrderModel.OtherAmount - context.AddOrderModel.Voucheramount; if (context.AddOrderModel.Payamount != totalAmount) { throw new Exception("订单价格异常"); } context.AddOrderModel.FlightList.ForEach(n => { n.StandardPrice = n.FacePrice; n.StandardRate = n.FRate; }); this.NextNode?.ActionValidate(context); return(true); }
/// <summary> /// 判断是否存在同人同行程的订单 /// </summary> /// <param name="context"></param> /// <returns></returns> public override bool ActionValidate(AddOrderAbstractContext context) { if (!context.AddOrderModel.IsCheckSameFlight) { this.NextNode?.ActionValidate(context); return(true); } List <string> passengerNameList = context.AddOrderModel.PassengerList.Select(n => n.Name).Distinct().ToList(); List <string> flightList = context.AddOrderModel.FlightList.Select(n => n.Dport + n.Aport).Distinct().ToList(); //List<string> flightNoList= context.AddOrderModel.FlightList.Select(n => n.FlightNo).Distinct().ToList(); List <DateTime> tackoffTimeList = context.AddOrderModel.FlightList.Select(n => n.TackoffTime).Distinct().ToList(); List <string> orderStatusList = new List <string>() { "N", "C" }; DateTime beginTime = DateTime.Now.AddYears(-1); var select = from order in context.DbContext.Set <FltOrderEntity>() join flight in context.DbContext.Set <FltFlightEntity>() on order.OrderId equals flight.OrderId join passenger in context.DbContext.Set <FltPassengerEntity>() on order.OrderId equals passenger.OrderId where !orderStatusList.Contains(order.Orderstatus.ToUpper()) && passengerNameList.Contains(passenger.Name) && flightList.Contains(flight.Dport + flight.Aport) && order.OrderDate > beginTime && tackoffTimeList.Contains(flight.TackoffTime) select order; var list = select.ToList(); if (list.Any()) { string message = string.Concat(list.Select(n => "," + n.OrderId).Distinct().ToList()).Substring(1); throw new MojoryException(MojoryApiResponseCode.SameFlight, "存在相同乘机人与航程的订单,订单号:" + message); } this.NextNode?.ActionValidate(context); return(true); }
public override bool ActionValidate(AddOrderAbstractContext context) { /**** * 这里进行B2G采购备注验证 * 如果是选择了B2G价格,则备注 * 如果选择了协议价格,但是其中存在B2G价格,则订单备注 * ***/ Dictionary <int, string> b2GDictionary = new Dictionary <int, string>(); Dictionary <int, bool> hasB2GPriceDictionary = new Dictionary <int, bool>(); foreach (var f in context.AddOrderModel.FlightList) { //选择B2G政策的 if (!string.IsNullOrEmpty(f.CorpPolicyType) && f.CorpPolicyType == FltPolicyTypeEnum.G.ToString()) { if (string.IsNullOrEmpty(f.PlcId)) { throw new Exception("请传入" + FltPolicyTypeEnum.G.ToDescription() + " 政策Id"); } b2GDictionary.Add(f.Sequence, FltPolicyTypeEnum.G.ToString()); f.PolicyMemo = f.ModDes; } //选择协议政策,但是有B2G价格的 if (!string.IsNullOrEmpty(f.CorpPolicyType) && f.CorpPolicyType == FltPolicyTypeEnum.X.ToString() && f.HasB2GPrice) { hasB2GPriceDictionary.Add(f.Sequence, true); } } B2GBuyRemark(context, b2GDictionary); B2GOrderRemark(context, hasB2GPriceDictionary); this.NextNode?.ActionValidate(context); return(true); }
public override bool ActionValidate(AddOrderAbstractContext context) { List <string> ticketNoList = context.AddRetModApplyModel.DetailList.Select(n => n.TicketNo).ToList(); if (ticketNoList == null || ticketNoList.Count == 0) { throw new Exception("退票申请请传入票号信息"); } foreach (var ticketNo in ticketNoList) { if (!ticketNo.Contains("-")) { throw new Exception("票号:" + ticketNo + "格式不正确"); } if (ticketNo.Length != 14) { throw new Exception("票号:" + ticketNo + "格式不正确"); } } this.NextNode?.ActionValidate(context); return(true); }
public override bool ActionValidate(AddOrderAbstractContext context) { /**** * 一旦有PolicyType有数据并且=X||G,则代表有协议,进行名单匹配 * 线上订单,一旦不在名单内,则提示不能下单; * 线下订单,一旦不在名单内,则提示请前去B2T或者官网进行比价; * ***/ bool isNeedCheck = false; foreach (FltFlightModel f in context.AddOrderModel.FlightList) { if (string.IsNullOrEmpty(f.CorpPolicyType)) { if (!string.IsNullOrEmpty(f.PolicyType)) { if (f.PolicyType == FltPolicyTypeEnum.G.ToString() || f.PolicyType == FltPolicyTypeEnum.X.ToString()) { isNeedCheck = true; } if (f.PolicyType == "C") { f.PolicyType = "差旅普通政策"; } else if (f.PolicyType == "X") { f.PolicyType = "差旅三协政策"; } else if (f.PolicyType == "G") { f.PolicyType = "差旅二协政策"; } } } else { if (f.CorpPolicyType == FltPolicyTypeEnum.G.ToString() || f.CorpPolicyType == FltPolicyTypeEnum.X.ToString()) { isNeedCheck = true; } } } if (isNeedCheck) { bool flag = false;//是否在名单内 string result = string.Empty; foreach (var flight in context.AddOrderModel.FlightList) { string airlineNo = flight.FlightNo.Length < 2 ? flight.FlightNo : flight.FlightNo.Substring(0, 2); if (CheckByNameAirlineNo.Contains(airlineNo.ToUpper())) { if (_checkPassengerIsInWhiteListBll.CheckPassenger(context.AddOrderModel.PassengerList, true)) { flag = true; } result += "," + _checkPassengerIsInWhiteListBll.Result; } else { if (_checkPassengerIsInWhiteListBll.CheckPassenger(context.AddOrderModel.PassengerList, false)) { flag = true; } result += "," + _checkPassengerIsInWhiteListBll.Result; } } if (!flag) { string message = "不在白名单内,不享受协议价,请删除后继续提交!"; if (context.AddOrderModel.PassengerList.Count == 1) { message = "不在白名单内,不享受协议价,请重新选择航班!"; } throw new MojoryException(MojoryApiResponseCode.NotInWhiteList, result.Substring(1) + message); } else { context.AddOrderModel.BuyRemark += result; } } this.NextNode?.ActionValidate(context); return(true); }
public ValidateOrderBll(AddOrderAbstractContext orderAbstractContext, ICheckPassengerIsInWhiteListBll checkPassengerIsInWhiteListBll) : base() { _orderAbstractContext = orderAbstractContext; _checkPassengerIsInWhiteListBll = checkPassengerIsInWhiteListBll; }
public ValidateModApplyBll(AddOrderAbstractContext orderAbstractContext) : base() { _orderAbstractContext = orderAbstractContext; }