Ejemplo n.º 1
0
        internal static BasicPrice GetBasicPrice(Guid id, BasicPriceView basicPriceView)
        {
            var basicPrice = GetBasicPrice(basicPriceView);

            basicPrice.Id         = id;
            basicPrice.ModifyTime = basicPriceView.ModifyTime;
            return(basicPrice);
        }
Ejemplo n.º 2
0
        public static void AddBasicPrice(BasicPriceView basicPriceView, string account)
        {
            basicPriceView.ModifyTime = DateTime.Now;
            var basicPrice = BasicPrice.GetBasicPrice(basicPriceView);

            BasicPriceCollection.Instance.Add(basicPrice.Id, basicPrice);
            saveAddLog("基础运价", basicPrice.ToString(), basicPrice.Id.ToString(), account);
        }
Ejemplo n.º 3
0
        public static void UpdateBasicPrice(Guid id, BasicPriceView basicPriceView, string account)
        {
            var originalBasicPrice = QueryBasicPrice(id);

            if (null == originalBasicPrice)
            {
                throw new ChinaPay.Core.CustomException("原基础运价不存在");
            }
            var originalContent = originalBasicPrice.ToString();

            basicPriceView.ModifyTime = DateTime.Now;
            var basicPrice = BasicPrice.GetBasicPrice(id, basicPriceView);

            BasicPriceCollection.Instance.Update(basicPrice.Id, basicPrice);
            saveUpdateLog("基础运价", originalContent, basicPrice.ToString(), basicPrice.Id.ToString(), account);
        }
Ejemplo n.º 4
0
 internal static BasicPrice GetBasicPrice(BasicPriceView basicPriceView)
 {
     if (null == basicPriceView)
     {
         throw new ArgumentNullException("basicPriceView");
     }
     basicPriceView.Validate();
     return(new BasicPrice()
     {
         AirlineCode = ChinaPay.Utility.StringUtility.Trim(basicPriceView.Airline),
         DepartureCode = ChinaPay.Utility.StringUtility.Trim(basicPriceView.Departure),
         ArrivalCode = ChinaPay.Utility.StringUtility.Trim(basicPriceView.Arrival),
         Price = basicPriceView.Price,
         Mileage = basicPriceView.Mileage,
         FlightDate = basicPriceView.FlightDate,
         ETDZDate = basicPriceView.ETDZDate,
         ModifyTime = basicPriceView.ModifyTime
     });
 }
Ejemplo n.º 5
0
 protected void btnSave_Click(object sender, EventArgs e)
 {
     if (Request.QueryString["action"] != null)
     {
         BasicPriceView basePriceView = new BasicPriceView()
         {
             Airline    = this.ddlAirline.SelectedValue == "0" ? string.Empty : this.ddlAirline.SelectedValue,
             Arrival    = this.drpArriveAirport.SelectedValue,
             Departure  = this.drpDepartAirport.SelectedValue,
             FlightDate = Convert.ToDateTime(this.txtHbDate.Text),
             ETDZDate   = Convert.ToDateTime(this.txtCpDate.Text),
             Price      = Convert.ToDecimal(this.txtPrice.Text.Trim()),
             Mileage    = Convert.ToDecimal(this.txtMileage.Text.Trim())
         };
         if (Request.QueryString["action"].ToString() == "add")
         {
             try
             {
                 FoundationService.AddBasicPrice(basePriceView, CurrentUser.UserName);
                 ClientScript.RegisterStartupScript(this.GetType(), this.UniqueID, "alert('添加成功!'); window.location.href='BasePrice.aspx';", true);
             } catch (Exception ex) {
                 ShowExceptionMessage(ex, "添加");
             }
         }
         else
         {
             try
             {
                 FoundationService.UpdateBasicPrice(new Guid(Request.QueryString["Id"].ToString()), basePriceView, CurrentUser.UserName);
                 ClientScript.RegisterStartupScript(this.GetType(), this.UniqueID, "alert('修改成功!'); window.location.href='BasePrice.aspx?Search=Back';", true);
             } catch (Exception ex) {
                 ShowExceptionMessage(ex, "修改");
             }
         }
     }
 }
Ejemplo n.º 6
0
        /// <summary>
        /// 根据FD数据更新舱位运价
        /// </summary>
        /// <param name="carrier">承运人</param>
        /// <param name="departure">出发地</param>
        /// <param name="arrival">到达地</param>
        /// <param name="flightDate">航班日期</param>
        /// <param name="fareData"></param>
        /// <param name="mileage"> </param>
        public static void FixBunkPrice(string carrier, string departure, string arrival, DateTime flightDate, List <GraduatedFare> fareData, decimal mileage)
        {
            var basePrice = fareData.FirstOrDefault(f => f.ClassOfService == "Y");

            if (basePrice == null)
            {
                return;
            }
            var b3bBasePrice = FoundationService.QueryBasicPrice(carrier, departure, arrival, flightDate);

            if (b3bBasePrice.Price != basePrice.OneWayFare)
            {
                var basicPriceView = new BasicPriceView()
                {
                    Airline    = b3bBasePrice.Airline != null? b3bBasePrice.Airline.Code.Value:null,
                    Departure  = b3bBasePrice.Departure != null?b3bBasePrice.Departure.Code.Value:null,
                    Arrival    = b3bBasePrice.Arrival != null?b3bBasePrice.Arrival.Code.Value:null,
                    FlightDate = b3bBasePrice.FlightDate,
                    ETDZDate   = b3bBasePrice.ETDZDate,
                    Price      = basePrice.OneWayFare,
                    Mileage    = b3bBasePrice.Mileage, //TODO   没有更新到最新里程数
                    ModifyTime = DateTime.Now
                };
                if (b3bBasePrice.Airline == null || b3bBasePrice.FlightDate != basePrice.EffectiveDate)
                {
                    basicPriceView.Airline    = carrier;
                    basicPriceView.Departure  = departure;
                    basicPriceView.Arrival    = arrival;
                    basicPriceView.FlightDate = basePrice.EffectiveDate;
                    basicPriceView.ETDZDate   = DateTime.Today < basePrice.EffectiveDate ? DateTime.Today : basePrice.EffectiveDate;
                    basicPriceView.Mileage    = mileage;
                    FoundationService.AddBasicPrice(basicPriceView, _systemauto);
                }
                else
                {
                    FoundationService.UpdateBasicPrice(b3bBasePrice.Id, basicPriceView, _systemauto);
                }
            }
            var           bunks          = FoundationService.QueryBunk(carrier, departure, arrival, flightDate).OfType <GeneralBunk>();
            var           diffPriceBunks = new Dictionary <Guid, BunkView>();
            List <string> FixedBunk      = new List <string>();
            var           newBunks       = new List <BunkView>();

            //var subBunkReg = new Regex("\\w\\d");
            foreach (GraduatedFare fare in fareData)
            {
                if (fare.ApplyType == ApplyType.Roundtrip)
                {
                    continue;
                }
                var isSubBunk = !string.IsNullOrEmpty(fare.SubClass);//subBunkReg.IsMatch(fare.ClassOfService);
                var bunk      = bunks.FirstOrDefault(b => b.Code.Value == fare.ClassOfService);
                if (!isSubBunk)
                {
                    if (FixedBunk.Contains(fare.ClassOfService))
                    {
                        continue;
                    }
                    if (bunk == null || bunk.Airline == null || bunk.Departure == null || bunk.Arrival == null)
                    {
                        newBunks.Add(CreatBunkFromFDData(fare, carrier, departure, arrival, basePrice.OneWayFare));
                    }
                    else if (FoundationService.CalculateFare(basePrice.OneWayFare, bunk.Discount) != fare.OneWayFare)
                    {
                        //var bunkView = GeneralBunkView(bunk,fare, basePrice);
                        //diffPriceBunks.Add(bunk.Id,bunkView);
                        var bunkView = CreatBunkFromFDData(fare, carrier, departure, arrival, basePrice.OneWayFare);
                        newBunks.Add(bunkView);
                    }
                    FixedBunk.Add(fare.ClassOfService);
                }
                else
                {
                    var extendedBunkView = new ExtendedWithDiscountBunkView()
                    {
                        Code     = fare.ClassOfService + fare.SubClass,
                        Discount = FoundationService.CalculateDiscount(basePrice.OneWayFare, fare.OneWayFare)
                    };
                    if (bunk == null || bunk.Airline == null || bunk.Departure == null || bunk.Arrival == null)
                    {//在舱位信息不够具体的时候添加子舱位
                        var tobeaddedbunkView = newBunks.FirstOrDefault(b => b.Code == fare.ClassOfService);
                        if (tobeaddedbunkView != null)
                        {//子舱位所在的舱位代码是新添加的
                            if (tobeaddedbunkView is FirstBusinessBunkView)
                            {
                                var fbBunkView = tobeaddedbunkView as FirstBusinessBunkView;
                                fbBunkView.AddExtended(extendedBunkView);
                            }
                            else
                            {
                                var eBunkView = tobeaddedbunkView as EconomicBunkView;
                                eBunkView.AddExtended(extendedBunkView);
                            }
                        }
                    }
                    else
                    {
                        BunkView bunkview = newBunks.FirstOrDefault(b => b.Code == fare.ClassOfService) ?? diffPriceBunks.FirstOrDefault(b => b.Value.Code == fare.ClassOfService).Value;
                        bunkview = bunkview ?? GeneralBunkView(bunk, fare, basePrice, false);
                        if (bunkview is FirstBusinessBunkView)
                        {
                            var fbBunkView    = bunkview as FirstBusinessBunkView;
                            var existsExtBunk = fbBunkView.Extended.FirstOrDefault(b => b.Code == extendedBunkView.Code);
                            if (existsExtBunk != null)
                            {
                                existsExtBunk.Discount = extendedBunkView.Discount;
                                if (!diffPriceBunks.ContainsKey(bunk.Id))
                                {
                                    diffPriceBunks.Add(bunk.Id, fbBunkView);
                                }
                            }
                            else
                            {
                                fbBunkView.AddExtended(extendedBunkView);
                            }
                        }
                        else
                        {
                            var fbBunkView    = bunkview as EconomicBunkView;
                            var existsExtBunk = fbBunkView.Extended.FirstOrDefault(b => b.Code == extendedBunkView.Code);
                            if (existsExtBunk != null)
                            {
                                existsExtBunk.Discount = extendedBunkView.Discount;
                                if (!diffPriceBunks.ContainsKey(bunk.Id))
                                {
                                    diffPriceBunks.Add(bunk.Id, fbBunkView);
                                }
                            }
                            else
                            {
                                fbBunkView.AddExtended(extendedBunkView);
                            }
                        }
                    }
                }
            }
            foreach (KeyValuePair <Guid, BunkView> bunk in diffPriceBunks)
            {
                FoundationService.UpdateBunk(bunk.Key, bunk.Value, _systemauto);
            }
            newBunks.ForEach(b => FoundationService.AddBunk(b, _systemauto));
        }