Example #1
0
        public void Get_Package_Tariff_With_6000_Kw()
        {
            var packageProduct = new PackageProduct();
            var cost           = packageProduct.CostCalulation(6000);

            Assert.Equal(1400, cost);
        }
Example #2
0
        public void Get_Package_Tariff_With_Negitive_Kw()
        {
            var packageProduct = new PackageProduct();
            var cost           = packageProduct.CostCalulation(-1);

            Assert.Equal(0, cost);
        }
Example #3
0
        public void Get_Package_Tariff_With_Wrong_Kw()
        {
            var packageProduct = new PackageProduct();
            var cost           = packageProduct.CostCalulation(12);

            Assert.Equal(800, cost);
        }
        public async Task <ActionResult <PackageProduct> > DeletePackProd(int id)
        {
            var result = new Result <PackageProduct>();

            PackageProduct packageProduct = await _context.PackageProduct.FindAsync(id);

            if (packageProduct == null)
            {
                return(NotFound());
            }
            else
            {
                result.Data = packageProduct;
                _context.PackageProduct.Remove(packageProduct);

                try
                {
                    await _context.SaveChangesAsync();
                }
                catch (Exception e)
                {
                    result.ErrorMessage = e.Message;
                    result.IsFound      = false;
                    return(BadRequest(result));
                }
                return(Ok(result));
            }
        }
        public PackageProduct GetPackage(UserFavorite favorite)
        {
            PackageProduct data = _repository
                                  .GetAll <PackageProduct>()
                                  .First(x => x.PackageProductId == favorite.PackageProductId);

            return(data);
        }
        public string GetVPHAPIDelivery(string OrderId, string LogisticsCode, string Waybill, XMOrderInfoApp xMorderInfoApp, string LogisticsName)
        {
            try
            {
                string AppKey      = xMorderInfoApp.AppKey;
                string AppSecret   = xMorderInfoApp.AppSecret;
                string CallbackUrl = xMorderInfoApp.CallbackUrl;//"http://www.hozest.com";
                string AccessToken = xMorderInfoApp.AccessToken;
                string posturl     = xMorderInfoApp.ServerUrl;

                DvdDeliveryServiceHelper.DvdDeliveryServiceClient client = new DvdDeliveryServiceHelper.DvdDeliveryServiceClient();
                InvocationContext invocationContext = Factory.GetInstance();
                invocationContext.SetAppKey(AppKey);
                invocationContext.SetAppSecret(AppSecret);
                invocationContext.SetAppURL(posturl);

                List <PackageProduct> packageProduct_list = new List <PackageProduct>();
                PackageProduct        packageProduct      = new PackageProduct();
                packageProduct.SetBarcode("");
                packageProduct.SetAmount(1);
                packageProduct_list.Add(packageProduct);

                List <Package> package_list = new List <Package>();
                Package        package      = new Package();
                package.SetTransport_no(Waybill);
                package.SetPackage_product_list(packageProduct_list);
                package_list.Add(package);

                List <Ship> ship_list = new List <Ship>();
                Ship        ship      = new Ship();
                ship.SetOrder_id(OrderId);
                ship.SetCarrier_code(LogisticsCode);
                ship.SetCarrier_name(LogisticsName);
                ship.SetPackage_type("1");
                ship.SetPackages(package_list);
                ship_list.Add(ship);

                ShipResult rsp = client.ship(6480, ship_list);

                if (rsp != null)
                {
                    if (rsp.GetSuccess_num() > 0 && rsp.GetFail_num() == 0)
                    {
                        return(rsp.GetSuccess_num().ToString());
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
            catch (Exception ex)
            {
                IoC.Resolve <IRecordErrorLogs>().WriteErrorLog("负责人:" + HozestERPContext.Current.User.CustomerID.ToString() + ";   方法名:GetVPHAPIDelivery;  异常提示:" + ex.Message.ToString() + ";   InnerException:" + ex.InnerException);
            }
            return(null);
        }
Example #7
0
 public static PackageProductViewModel FromEntity(PackageProduct packageProduct)
 {
     return(new PackageProductViewModel
     {
         ProductId = packageProduct.ProductId,
         Quantity = packageProduct.Quantity,
         ProductViewModel = ProductViewModel.FromEntity(packageProduct.Product)
     });
 }
        public IHttpActionResult Save()
        {
            var httpRequest = HttpContext.Current.Request;
            var postOb      = httpRequest["postOb"];
            JsonSerializerSettings settings = new JsonSerializerSettings();

            settings.NullValueHandling = NullValueHandling.Ignore;
            PackageProduct post   = JsonConvert.DeserializeObject <PackageProduct>(postOb, settings);
            ResponseModel  result = _packageProductRepository.SavePackageProduct(post);

            foreach (string file in httpRequest.Files)
            {
                var postedFile = httpRequest.Files[file];
                if (postedFile != null && postedFile.ContentLength > 0)
                {
                    int MaxContentLength = 1024 * 1024 * 1; //Size = 1 MB

                    IList <string> AllowedFileExtensions = new List <string> {
                        ".jpg", ".gif", ".png"
                    };
                    var ext       = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf('.'));
                    var extension = ext.ToLower();
                    if (!AllowedFileExtensions.Contains(extension))
                    {
                        var message = string.Format("Please Upload image of type .jpg,.gif,.png.");
                    }
                    else if (postedFile.ContentLength > MaxContentLength)
                    {
                        var message = string.Format("Please Upload a file upto 1 mb.");
                    }
                    else
                    {
                        var fileExtension = Path.GetExtension(postedFile.FileName);
                        var fileId        = post.FileId;
                        var picPath       = HttpContext.Current.Server.MapPath(@"~\UploadFiles\");
                        if (!Directory.Exists(picPath))
                        {
                            Directory.CreateDirectory(picPath);
                        }
                        if (!CommonHelper.IsValidFile(fileExtension))
                        {
                            result.Message = "File Formate is not valid";
                        }
                        var filePath = Path.Combine(picPath, fileId + fileExtension);
                        if (post.Id != null)
                        {
                            if (System.IO.File.Exists(Path.Combine(picPath, post.FileId + Path.GetExtension(post.FileName))))
                            {
                                System.IO.File.Delete(Path.Combine(picPath, post.FileId + Path.GetExtension(post.FileName)));
                            }
                        }
                        postedFile.SaveAs(filePath);
                    }
                }
            }
            return(Ok(result));
        }
        public int UpdatePackageProduct(PackageProduct packageProduct)
        {
            string updateSQL = $"UPDATE {DbTable.F_OUT_CASE_PRODUCT_NAME} SET " +
                               $"{DbTable.F_Out_Case_Product.BINDING_STATE} = '{packageProduct.BindingState}' " +
                               $"WHERE {DbTable.F_Out_Case_Product.OUT_CASE_CODE} = '{packageProduct.CaseCode}' AND " +
                               $"{DbTable.F_Out_Case_Product.SN_OUTTER} = '{packageProduct.SnOutter}' ";

            LogHelper.LogInfo($"UpdatePackageProduct={updateSQL}");
            return(SQLServer.ExecuteNonQuery(updateSQL));
        }
        public async Task <ActionResult> AddPackProd(PackageProductModel packProd)
        {
            var result = new Result <string>();


            PackageProduct packageProduct = new PackageProduct();


            var packprodcheck = _context.PackageProduct.Where(pp => pp.PackId == packProd.PackId && pp.ProdId == packProd.ProdId).FirstOrDefaultAsync();

            if (packprodcheck.Result != null)
            {
                if (packProd.ProdDetailId == null)
                {
                    result.ErrorMessage = "This product already exist in the package.";
                    result.IsSuccess    = false;
                    return(BadRequest(result));
                }
                else
                {
                    var packProdDetailCheck = _context.PackageProduct.Where(pp => pp.PackId == packProd.PackId && pp.ProdId == packProd.ProdId && pp.ProdDetailId == packProd.ProdDetailId).FirstOrDefaultAsync();
                    if (packProdDetailCheck.Result != null)
                    {
                        result.ErrorMessage = "This product detail already exist in the package.";
                        result.IsSuccess    = false;
                        return(BadRequest(result));
                    }
                    else
                    {
                        _mapper.Map(packProd, packageProduct);
                        packageProduct.CreateAt = DateTime.Now;
                    }
                }
            }
            else
            {
                _mapper.Map(packProd, packageProduct);
                packageProduct.CreateAt = DateTime.Now;
            }
            await _context.PackageProduct.AddAsync(packageProduct);

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                result.ErrorMessage = e.Message;
                result.IsSuccess    = false;
                return(BadRequest(result));
            }
            return(Ok(result));
        }
        public int DeletePackageProduct(PackageProduct packageProduct)
        {
            string deleteSQL = "";

            if (packageProduct.SnOutter == "" && packageProduct.CaseCode == "")
            {
                deleteSQL = $"DELETE FROM {DbTable.F_OUT_CASE_PRODUCT_NAME} ";
            }
            else
            {
                deleteSQL = $"DELETE FROM {DbTable.F_OUT_CASE_PRODUCT_NAME} " +
                            $"WHERE {DbTable.F_Out_Case_Product.OUT_CASE_CODE} = '{packageProduct.CaseCode}' AND " +
                            $"{DbTable.F_Out_Case_Product.SN_OUTTER} = '{packageProduct.SnOutter}'";
            }
            return(SQLServer.ExecuteNonQuery(deleteSQL));
        }
        public DataSet SelectPackageProduct(PackageProduct packageProduct)
        {
            //箱子编码/追溯码查询
            string selectSQL = "";

            if (string.IsNullOrEmpty(packageProduct.CaseCode) && string.IsNullOrEmpty(packageProduct.SnOutter))
            {
                selectSQL = $"SELECT * FROM {DbTable.F_OUT_CASE_PRODUCT_NAME} " +
                            $"WHERE {DbTable.F_Out_Case_Product.BINDING_STATE} = '{packageProduct.BindingState}'";
            }
            else
            {
                selectSQL = $"SELECT * FROM {DbTable.F_OUT_CASE_PRODUCT_NAME} WHERE " +
                            $"{DbTable.F_Out_Case_Product.OUT_CASE_CODE} = '{packageProduct.CaseCode}' AND " +
                            $"{DbTable.F_Out_Case_Product.SN_OUTTER} = '{packageProduct.SnOutter}' AND " +
                            $"{DbTable.F_Out_Case_Product.BINDING_STATE} = '{packageProduct.BindingState}'";
            }
            return(SQLServer.ExecuteDataSet(selectSQL));
        }
Example #13
0
        public ActionResult CreatePackage(string packageName, string packagePrice, int[] productIds)
        {
            if (ModelState.IsValid)
            {
                var package = new Package();
                package.PackageName  = packageName;
                package.PackagePrice = Convert.ToDecimal(packagePrice);
                package.PackageKey   = Guid.NewGuid().ToString();
                unitOfWork.Packages.Insert(package);
                unitOfWork.Save();
                var packageId = unitOfWork.Packages.Get(x => x.PackageKey == package.PackageKey).FirstOrDefault().PackageId;

                for (int i = 0; i < productIds.Length; i++)
                {
                    var packageProduct = new PackageProduct();
                    packageProduct.PackageId = packageId;
                    packageProduct.ProductId = productIds[i];
                    unitOfWork.PackageProducts.Insert(packageProduct);
                }
                unitOfWork.Save();
                return(RedirectToAction("Index"));
            }
            return(View());
        }
        public int CommitPackageProduct(PackageProduct packageProduct)
        {
            string imageName = "@imageData";
            string insertSQL = $"INSERT INTO {DbTable.F_OUT_CASE_PRODUCT_NAME}({DbTable.F_Out_Case_Product.OUT_CASE_CODE}," +
                               $"{DbTable.F_Out_Case_Product.SN_OUTTER},{DbTable.F_Out_Case_Product.TYPE_NO}," +
                               $"{DbTable.F_Out_Case_Product.PICTURE},{DbTable.F_Out_Case_Product.BINDING_STATE}," +
                               $"{DbTable.F_Out_Case_Product.BINDING_DATE}) " +
                               $"VALUES('{packageProduct.CaseCode}','{packageProduct.SnOutter}','{packageProduct.TypeNo}',{imageName}," +
                               $"'{packageProduct.BindingState}','{packageProduct.BindingDate}')";

            LogHelper.Log.Info($"CommitPackageProduct Init Insert={insertSQL}");
            if (IsExistPackageProduct(packageProduct.CaseCode, packageProduct.SnOutter))
            {
                //update
                return(UpdatePackageProduct(packageProduct));
            }
            else
            {
                try
                {
                    SqlParameter[] sqlParameters = new SqlParameter[1];
                    SqlParameter   sqlParameter  = new SqlParameter();
                    sqlParameter.ParameterName = imageName;
                    sqlParameter.SqlDbType     = SqlDbType.Binary;
                    sqlParameter.Value         = packageProduct.Picture;
                    sqlParameters[0]           = sqlParameter;
                    return(SQLServer.ExecuteNonQuery(insertSQL, sqlParameters));
                }
                catch (Exception ex)
                {
                    LogHelper.Log.Error($"Err start ExecuteNonQuery={ex.Message}\r\n{ex.StackTrace}");
                    return(-1);
                }
                //return ExecuteSQL(insertSQL,packageProduct.Picture);
            }
        }
Example #15
0
        public PackageProduct <P> ConvertString2Object <P>(string jsonString, StringBuilder logMsg)
        {
            if (string.IsNullOrEmpty(jsonString))
            {
                logMsg.AppendFormat(" [data not exists:{0}]", DateTime.Now.AddHours(8).ToString("yyyy-MM-dd HH:mm:ss"));
                PackageProduct <P> p = new PackageProduct <P>();
                p.data = new List <P>();
                return(p);
            }
            PackageProduct <P> instance = Activator.CreateInstance <PackageProduct <P> >();

            string[] strTemp = jsonString.Split(new char[] { '[', ']' }, StringSplitOptions.RemoveEmptyEntries);
            if (strTemp.Length != 3)
            {
                logMsg.AppendFormat("[The data will not be updated from url:{0}]", DateTime.Now.AddHours(8).ToString("yyyy-MM-dd HH:mm:ss"));
                PackageProduct <P> p = new PackageProduct <P>();
                p.data = new List <P>();
                return(p);



                //throw new Exception("数据字符串不存在");
            }
            string code = strTemp[0].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)[0].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries)[1].Replace("\"", "");

            string msg  = strTemp[0].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)[1].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries)[1].Replace("\"", "");
            string data = strTemp[1];
            int    intCode;

            instance.code = string.IsNullOrEmpty(code) ? 0 : (int.TryParse(code, out intCode) ? intCode : 0);
            instance.msg  = msg;
            data          = data.Replace("{", "@").Replace("},", "@").Replace("}", "@");
            string[] dataArray = data.Split(new char[] { '@' }, StringSplitOptions.RemoveEmptyEntries);
            if (dataArray.Length > 0)
            {
                instance.data = new List <P>();
            }
            //创建JSON正则表达式;
            P item = default(P);

            int iy = dataArray.Length;

            for (int i = 0; i < dataArray.Length; i++)
            {
                item = Activator.CreateInstance <P>();
                string[] jsonData = dataArray[i].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                ///////////////////
                int    first = 0;
                string buf   = string.Empty;
                /////////////////
                for (int j = 0; j < jsonData.Length; j++)
                {
                    if (jsonData[j].IndexOf(":") < 0)
                    {
                        /////////
                        if (first == 0)
                        {
                            first = j - 1;
                        }
                        buf += "," + jsonData[j];

                        /////////////////

                        //jsonData[j - 1] += "," + jsonData[j];
                        jsonData[j] = "";
                    }
                }
                jsonData[first] += buf;
                for (int j = 0; j < jsonData.Length; j++)
                {
                    if (string.IsNullOrEmpty(jsonData[j]))
                    {
                        continue;
                    }

                    string   propertyName = jsonData[j].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries)[0].Replace("\"", "");
                    string   pValue       = string.Empty;
                    string[] updateTime   = jsonData[j].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                    if (updateTime.Length == 2)
                    {
                        pValue = updateTime[1].Replace("\"", "");
                    }
                    else
                    {
                        for (int k = 1; k < updateTime.Length; k++)
                        {
                            pValue += updateTime[k].Replace("\"", "") + ":";
                        }
                        pValue = pValue.Substring(0, pValue.Length - 1);
                    }
                    var pros = item.GetType().GetProperties();
                    for (int k = 0; k < pros.Length; k++)
                    {
                        if (pros[k].Name == propertyName.Trim())
                        {
                            if (pValue == "null")
                            {
                                pros[k].SetValue(item, null, null);
                            }
                            else
                            {
                                pros[k].SetValue(item, Convert.ChangeType(pValue, pros[k].PropertyType), null);
                            }
                        }
                    }
                }
                instance.data.Add(item);
            }


            return(instance);
        }
    private PackageMerchandise SearchPackage(Terms.Sales.Business.PackageSearchCondition searchCondition)
    {
        searchCondition.UserInfo = UserInfo;
        searchCondition.AirSearchCondition.UserInfo = UserInfo;
        searchCondition.HotelSearchCondition.UserInfo = UserInfo;

        if (searchCondition.HotelSearchCondition2 != null)
            searchCondition.HotelSearchCondition2.UserInfo = UserInfo;

        //��Cache�в��ҽ�
        PackageMerchandise packageMerchandise = (PackageMerchandise)MVMerchandisePool.Find(searchCondition);

        if (packageMerchandise == null)
        {
            DateTime SearchingBeginningTime = DateTime.Now;

            Utility.Transaction.Difference.To = "OnSearch1 End";
            Utility.Transaction.Difference.EndTime = DateTime.Now;
            Utility.Transaction.Difference.From = "Search Package By Find";
            Utility.Transaction.Difference.StarTime = DateTime.Now;

            PackageProductSearcher searcher = new PackageProductSearcher();
            TERMS.Common.Search.PackageSearchCondition pkgCondition = new TERMS.Common.Search.PackageSearchCondition();
            DateTime depDate = searchCondition.AirSearchCondition.GetAddTripCondition()[0].DepartureDate;
            DateTime rtnDate = new DateTime();
            string fromAirportCode = searchCondition.AirSearchCondition.GetAddTripCondition()[0].Departure.Code;
            string toAirportCode = searchCondition.AirSearchCondition.GetAddTripCondition()[0].Destination.Code;
            string rtnFromAirportCode = string.Empty;
            string rtnToAirportCode = string.Empty;
            int adultNumber = searchCondition.AirSearchCondition.GetPassengerNumber(TERMS.Common.PassengerType.Adult);

            int childNumber = searchCondition.AirSearchCondition.GetPassengerNumber(TERMS.Common.PassengerType.Child);
            IList<PackageProduct> pkgs = new List<PackageProduct>();
            if (searchCondition.AirSearchCondition.FlightType.ToLower().Equals("oneway"))
            {
                //û��
            }
            else if (searchCondition.AirSearchCondition.FlightType.ToLower().Equals("roundtrip"))
            {
                rtnDate = searchCondition.AirSearchCondition.GetAddTripCondition()[1].DepartureDate;
                pkgCondition.AirCondition = new TERMS.Common.Search.AirSearchCondition(fromAirportCode, true, toAirportCode, true, depDate, true, rtnDate, true, adultNumber, childNumber, 0);
            }
            else
            {
                rtnDate = searchCondition.AirSearchCondition.GetAddTripCondition()[1].DepartureDate;
                rtnFromAirportCode = searchCondition.AirSearchCondition.GetAddTripCondition()[1].Departure.Code;
                rtnToAirportCode = searchCondition.AirSearchCondition.GetAddTripCondition()[1].Destination.Code;
                pkgCondition.AirCondition = new TERMS.Common.Search.AirSearchCondition(fromAirportCode, true, toAirportCode, true, depDate, true, rtnFromAirportCode, true, rtnToAirportCode, true, rtnDate, true, adultNumber, childNumber, 0);
            }

            if (ConfigurationManager.AppSettings.Get("IsOpenCommNetFareTicket") != null)
                pkgCondition.AirCondition.IsAvailableOnly = Convert.ToBoolean(ConfigurationManager.AppSettings.Get("IsOpenCommNetFareTicket").ToString());

            //����Airlines
            if (searchCondition.AirSearchCondition.Airlines != null && searchCondition.AirSearchCondition.Airlines.Length > 0)
                pkgCondition.AirCondition.AddAirlines(searchCondition.AirSearchCondition.Airlines);

            //����Cabin
            for (int i = 0; i < pkgCondition.AirCondition.Trips.Count; i++)
                pkgCondition.AirCondition.Trips[i].Cabin = searchCondition.AirSearchCondition.AirTripCondition[i].Cabin;

            //ת��Hotel Search Condition
            pkgCondition.HotelCondition = ConvertHotelSearchCondition(searchCondition.HotelSearchCondition);

            pkgs = searcher.Search(pkgCondition);

            //Ϊ�̷߳�����Ӳ��� package
            PackageProduct pkg = package = pkgs[0];
            Utility.Transaction.Difference.To = "Intel Search Over";
            Utility.Transaction.Difference.EndTime = DateTime.Now;
            Utility.Transaction.Difference.From = "Return AIRItem Start";
            Utility.Transaction.Difference.StarTime = DateTime.Now;

            //�����߳� ͬʱ��ѯ Air �� Hotel
            PackageThreadStar();

            //IList<TERMS.Core.Product.Component> aa = pkg.AirGroup.Items;

            if (packageair == null || packageair.Count == 0)
            {
                m_Error = "Searching is not available in Web Searching now. Please choose another travel date or destination.(pa1)";
                return null;
            }

            Utility.Transaction.Difference.To = "Return AIRItem End";
            Utility.Transaction.Difference.EndTime = DateTime.Now;
            Utility.Transaction.Difference.From = "Return HotelItem Start";
            Utility.Transaction.Difference.StarTime = DateTime.Now;

            //IList<TERMS.Core.Product.Component> BB = pkg.HotelGroup.Items;

            if (packagehotel == null || packagehotel.Count == 0)
            {
                m_Error = "Searching is not available in Web Searching now. Please choose another travel date or destination.(ph1)";
                return null;
            }

            Utility.Transaction.Difference.To = "Return HotelItem End";
            Utility.Transaction.Difference.EndTime = DateTime.Now;
            Utility.Transaction.Difference.From = "Convert Start";
            Utility.Transaction.Difference.StarTime = DateTime.Now;

            TERMS.Business.Centers.ProductCenter.Profiles.PackageProfile packageProfile = (TERMS.Business.Centers.ProductCenter.Profiles.PackageProfile)pkg.Profile;

            packageProfile.SetParam("ADULT_NUMBER", adultNumber);
            packageProfile.SetParam("CHILD_NUMBER", childNumber);
            packageProfile.SetParam("CheckIn", searchCondition.HotelSearchCondition.CheckIn);
            packageProfile.SetParam("CheckOut", searchCondition.HotelSearchCondition.CheckOut);
            packageProfile.SetParam("Location", searchCondition.HotelSearchCondition.Location);
            try
            {
                packageMerchandise = new PackageMerchandise(packageProfile, pkg);

                if (packageMerchandise.Items[1] == null || ((HotelMerchandise)packageMerchandise.Items[1]).Items == null || ((HotelMerchandise)packageMerchandise.Items[1]).Items.Count == 0)
                {
                    m_Error = "Searching is not available in Web Searching now. Please choose another travel date or destination.";
                    return null;
                }

                for (int i = 1; i < packageMerchandise.Items.Count; i++)
                {
                    HotelMerchandise hotelMerchandise = (HotelMerchandise)packageMerchandise.Items[i];
                    hotelMerchandise.Profile.CheckInDate = searchCondition.HotelSearchCondition.CheckIn;
                    hotelMerchandise.Profile.CheckOutDate = searchCondition.HotelSearchCondition.CheckOut;//
                    hotelMerchandise = ConvertHotelToMVHotel(searchCondition.HotelSearchCondition, hotelMerchandise);
                }
                //�ж�
                if (packageMerchandise.Items[1] == null || ((HotelMerchandise)packageMerchandise.Items[1]).Items == null || ((HotelMerchandise)packageMerchandise.Items[1]).Items.Count == 0)
                {
                    m_Error = "Searching is not available in Web Searching now. Please choose another travel date or destination.";
                    return null;
                }

                MVMerchandisePool.Cache(searchCondition.Clone(), packageMerchandise); //Cache

                if (searchCondition.OptionalHotelSearchConditions.Count > 0)
                {
                    for (int j = 0; j < searchCondition.OptionalHotelSearchConditions.Count; j++)
                    {
                        packageMerchandise.Items.Add(SearchHotel(searchCondition.OptionalHotelSearchConditions[j]));
                    }
                    packageMerchandise.ReSetPMItems();    // �趨��Ĭ����������
                }
                packageMerchandise.Reset();//��Ϊ��ʼ��packageMerchandise �е� CurrentItem
            }
            catch (Exception Ex)
            {
                throw new Exception(Ex.Message);
            }

            //��¼Searchʱ��
            DateTime SearchingEndingTime = DateTime.Now;
            SearchingLogger searchingLogger = new SearchingLogger();
            searchingLogger.Log(SearchingBeginningTime, SearchingEndingTime, searchCondition);
        }
        else
        {
            if (searchCondition.OptionalHotelSearchConditions.Count == packageMerchandise.CurrentItems.Count - 3)
            {
                packageMerchandise.Items.RemoveAt(packageMerchandise.Items.Count - 1);
                packageMerchandise.CurrentItems.RemoveAt(packageMerchandise.CurrentItems.Count - 1);

                packageMerchandise.CurrentHotelListNumber = 0;
                packageMerchandise.Reset();
                packageMerchandise.ReSetPMItems();
            }

            if (searchCondition.IsReset) //����packageMerchandise �е� CurrentItem
            {
                for (int i = 2; i < packageMerchandise.Items.Count; i++)
                {
                    packageMerchandise.Items.Remove(packageMerchandise.Items[i]);
                }
                packageMerchandise.CurrentHotelListNumber = 0;
                packageMerchandise.Reset();
                packageMerchandise.ReSetPMItems();
            }
        }

        List<int> searchFaildHotelIndexs = new List<int>();

        for (int i = 0; i < searchCondition.OptionalHotelSearchConditions.Count; i++)
        {
            HotelMerchandise hotelMerchandise = (HotelMerchandise)MVMerchandisePool.Find(searchCondition.OptionalHotelSearchConditions[i]);
            if (hotelMerchandise == null)
            {
                hotelMerchandise = SearchHotel(searchCondition.OptionalHotelSearchConditions[i]);

                if (hotelMerchandise == null) //Search Hotelʧ��
                    searchFaildHotelIndexs.Add(i);

                packageMerchandise.Items.Add(hotelMerchandise);
                packageMerchandise.Reset(i + 2);
                packageMerchandise.ReSetPMItems();
            }
            else
            {
                if ((packageMerchandise.Items.Count - 1) >= (i + 2))//�ж��±�(i+2),��Items �����Ƿ����
                    packageMerchandise.Items[i + 2] = hotelMerchandise;
                else
                {
                    packageMerchandise.Items.Add(hotelMerchandise);
                    packageMerchandise.Reset(i + 2);
                    packageMerchandise.ReSetPMItems();
                }
                if (searchCondition.IsReset) //����packageMerchandise �е� CurrentItem[i+2]
                    packageMerchandise.Reset(i + 2);
            }

        }

        if (searchFaildHotelIndexs.Count > 0) //Search Hotelʧ��
        {
            for (int i = 0; i < searchFaildHotelIndexs.Count; i++)
            {
                //���Searchʧ�ܵ�Hotel Search Condition
                searchCondition.OptionalHotelSearchConditions.RemoveAt(searchFaildHotelIndexs[i] - i);
                packageMerchandise.Items.RemoveAt(searchFaildHotelIndexs[i] + 2 - i);
                packageMerchandise.CurrentItems.RemoveAt(searchFaildHotelIndexs[i] + 2 - i);
            }

            packageMerchandise.ReSetPMItems();

            return null;
        }

        searchCondition.IsReset = false;

        Utility.Transaction.Difference.To = "Convert End";
        Utility.Transaction.Difference.EndTime = DateTime.Now;

        Utility.Transaction.Difference.From = "Search End";
        Utility.Transaction.Difference.StarTime = DateTime.Now;

        packageMerchandise.UserInfo = UserInfo.User.UserName;

        return packageMerchandise;
    }
Example #17
0
        public async Task <IActionResult> PostAsync([FromBody] RegisterPackage command)
        {
            if (ModelState.IsValid)
            {
                Package package = Mapper.Map <Package>(command);

                // Checklist for package, order and product
                List <Product> products         = new List <Product>();
                List <Order>   orders           = new List <Order>();
                bool           packageIsChecked = false;
                bool           orderIsChecked   = false;

                foreach (var order in package.Orders)
                {
                    // Get the order from order repository
                    var ord = await _orderRepo.GetOrderAsync(order.OrderId);

                    if (ord != null)
                    {
                        // Create a "PackageOrder" entity and map the relationships with package and order
                        var packageOrder = new PackageOrder
                        {
                            Package = package,
                            Order   = ord,
                        };

                        // Add both "PackageOrder" and "Order" to the package
                        package.PackageOrders.Add(packageOrder);
                        orders.Add(ord);
                    }
                    else
                    {
                        return(NotFound());
                    }
                }

                // Check if ALL the orders have the same value in order "Destination"
                // (NOTE: Orders must have the same destination in order to be packaged)
                if (orders.Count != 0)
                {
                    orderIsChecked = !package.Orders
                                     .Select(o => o.Destination)
                                     .Distinct()
                                     .Skip(1)
                                     .Any();
                }
                else
                {
                    return(BadRequest());
                }

                foreach (var product in package.Products)
                {
                    // Get the product from product repository
                    var prod = await _productRepo.GetProductAsync(product.ProductId);

                    if (prod != null)
                    {
                        // Add the total weight to the package from all products
                        package.WeightInKgMax += prod.Weight;

                        // Create a "PackageProduct" entity and map the relationships with package and product
                        var packageProduct = new PackageProduct
                        {
                            Package = package,
                            Product = prod,
                        };

                        // Add both "PackageProduct" and "Product" to the package
                        package.PackageProducts.Add(packageProduct);
                        products.Add(prod);
                    }
                    else
                    {
                        return(NotFound());
                    }
                }

                // Replace the current package "Orders" and "Products" with correct ones
                if (orders.Count != 0 && products.Count != 0)
                {
                    package.Orders   = orders;
                    package.Products = products;
                }

                // Check if the package is of the type "Letterbox" and its total weight is less or equal to 2
                // (NOTE: This is a "Letterbox" package)
                if (package.TypeOfPackage == "Letterbox package" && package.WeightInKgMax <= 2)
                {
                    packageIsChecked = true;
                }

                // Check if the package is NOT of type "Letterbox" and its total weight is greater then 2 and less or equal to 20
                // (NOTE: This is a "Package" of any kind)
                if (package.TypeOfPackage != "Letterbox package" && package.WeightInKgMax > 2 && package.WeightInKgMax <= 20)
                {
                    packageIsChecked = true;
                }

                if (packageIsChecked == true && orderIsChecked == true)
                {
                    // Insert Package
                    package.Region         = package.Orders.Select(o => o.Destination).FirstOrDefault();
                    package.ShippingStatus = "IN STOCK";
                    package.Transport      = null;
                    await _packageRepo.AddPackageAsync(package);

                    return(CreatedAtRoute("GetPackageById", new { packageId = package.PackageId }, package));
                }

                return(BadRequest());
            }

            return(BadRequest());
        }
        public OperationResult CreateOrder(UserForm userForm, OrderData data, out string productName)
        {
            var result = new OperationResult();
            //尋找是否有可用Coupon
            CouponDetail couponDetail = CheckCoupon(data.AccountName, data.CouponDetailId);

            if (couponDetail == null)
            {
                data.CouponDetailId = null;
            }
            else
            {
                data.CouponDetailId = couponDetail.CouponDetailId;
            }
            byte?invoiceDonateTo;

            if (userForm.InvoiceDonateTo == null)
            {
                invoiceDonateTo = null;
            }
            else
            {
                invoiceDonateTo = byte.Parse(userForm.InvoiceDonateTo);
            }
            UserFavorite favorite = _repository.GetAll <UserFavorite>()
                                    .First(x => x.FavoriteId == data.FavoriteId);
            PackageProduct            package         = null;
            List <UserDefinedProduct> userDefinedList = null;

            if (favorite.IsPackage)
            {
                package     = GetPackage(favorite);
                productName = package.Name;
            }
            else
            {
                userDefinedList = GetUserDefinedList(favorite);
                productName     = userDefinedList[0].Name;
            }
            using (var transaction = _context.Database.BeginTransaction()) {
                try {
                    Order order = new Order {
                        OrderId         = Guid.NewGuid(),
                        AccountName     = data.AccountName,
                        FullName        = userForm.FullName,
                        Email           = userForm.Email,
                        Phone           = userForm.Phone,
                        DateService     = DateTime.Parse(userForm.DateService),
                        Address         = $"{userForm.County}{userForm.District}{userForm.Address}",
                        Remark          = userForm.Remark == null ? string.Empty : userForm.Remark,
                        OrderState      = (byte)OrderState.Unpaid,
                        Rate            = null,
                        Comment         = string.Empty,
                        CouponDetailId  = data.CouponDetailId,
                        PaymentType     = string.Empty,
                        InvoiceType     = byte.Parse(userForm.InvoiceType),
                        InvoiceDonateTo = invoiceDonateTo,
                        MerchantTradeNo = data.MerchantTradeNo,
                        TradeNo         = string.Empty,
                        CreateTime      = data.Now,
                        EditTime        = data.Now,
                        CreateUser      = data.AccountName,
                        EditUser        = data.AccountName,
                    };
                    _repository.Create <Order>(order);
                    _context.SaveChanges();

                    OrderDetail od = new OrderDetail {
                        OrderDetailId = Guid.NewGuid(),
                        OrderId       = order.OrderId,
                        FavoriteId    = data.FavoriteId,
                        FinalPrice    = data.FinalPrice,
                        ProductName   = productName,
                        CreateTime    = data.Now,
                        EditTime      = data.Now,
                        CreateUser    = data.AccountName,
                        EditUser      = data.AccountName,
                    };
                    _repository.Create <OrderDetail>(od);
                    _context.SaveChanges();

                    if (favorite.IsPackage)
                    {
                        List <int?> roomTypes = new List <int?> {
                            package.RoomType, package.RoomType2
                        };
                        if (package.RoomType3 >= 0)
                        {
                            roomTypes.Add(package.RoomType3);
                        }
                        List <int?> squareFeets = new List <int?> {
                            package.Squarefeet, package.Squarefeet2
                        };
                        if (package.Squarefeet3 >= 0)
                        {
                            squareFeets.Add(package.Squarefeet3);
                        }

                        OrderPackage orderPackage = new OrderPackage {
                            OrderId      = order.OrderId,
                            RoomTypes    = string.Join(",", roomTypes),
                            SquareFeets  = string.Join(",", squareFeets),
                            ServiceItems = package.ServiceItem,
                            Hour         = package.Hour,
                            Price        = package.Price,
                            CreateTime   = data.Now,
                            EditTime     = data.Now,
                            CreateUser   = data.AccountName,
                            EditUser     = data.AccountName,
                        };
                        _repository.Create <OrderPackage>(orderPackage);
                    }
                    else
                    {
                        foreach (var item in userDefinedList)
                        {
                            OrderUserDefined orderUserDefined = new OrderUserDefined {
                                OrderId      = order.OrderId,
                                RoomType     = item.RoomType,
                                SquareFeet   = item.Squarefeet,
                                ServiceItems = item.ServiceItems,
                                Hour         = item.Hour,
                                Price        = item.Price,
                                CreateTime   = data.Now,
                                EditTime     = data.Now,
                                CreateUser   = data.AccountName,
                                EditUser     = data.AccountName,
                            };
                            _repository.Create <OrderUserDefined>(orderUserDefined);
                        }
                    }
                    _context.SaveChanges();

                    if (couponDetail != null)
                    {
                        couponDetail.State = (int)UseState.Used;
                        _context.SaveChanges();
                    }

                    result.IsSuccessful = true;
                    transaction.Commit();
                } catch (Exception ex) {
                    result.IsSuccessful = false;
                    result.Exception    = ex;
                    transaction.Rollback();
                }
            }
            return(result);
        }
 public IHttpActionResult Delete([FromBody] PackageProduct model)
 {
     return(Ok(_packageProductRepository.DeletePackageProduct(model)));
 }
        public List <UserFavoriteViewModel> GetFavoriteUserFavoriteData(string username)
        {
            List <UserFavoriteViewModel> packageslist = new List <UserFavoriteViewModel>();

            var userFavorites = _repository.GetAll <UserFavorite>().Where(x => x.AccountName == username).OrderBy(x => x.CreateTime).ToList();

            foreach (var item in userFavorites)
            {
                if (item.IsDelete == false)
                {
                    if (item.IsPackage)
                    {
                        PackageProduct p = _repository.GetAll <PackageProduct>().FirstOrDefault(x => x.PackageProductId == item.PackageProductId);

                        UserFavoriteData ufdata = new UserFavoriteData
                        {
                            Hour             = p.Hour,
                            ServiceItem      = p.ServiceItem,
                            Price            = p.Price,
                            Title            = p.Name,
                            RoomType         = $"{RoomTypeSwitch(p.RoomType)},{RoomTypeSwitch(p.RoomType2)},{RoomTypeSwitch(p.RoomType3)}",
                            Squarefeet       = $"{SquarefeetSwitch(p.Squarefeet)},{SquarefeetSwitch(p.Squarefeet2)},{SquarefeetSwitch(p.Squarefeet3)}",
                            PhotoUrl         = p.PhotoUrl,
                            PackageProductId = p.PackageProductId
                        };

                        UserFavoriteViewModel ufVM = new UserFavoriteViewModel
                        {
                            Data = new List <UserFavoriteData> {
                                ufdata
                            },
                            FavoriteId = item.FavoriteId,
                            IsPackage  = item.IsPackage
                        };
                        packageslist.Add(ufVM);
                    }
                    else
                    {
                        var query = from udp in _repository.GetAll <UserDefinedProduct>()
                                    where udp.UserDefinedId == item.UserDefinedId
                                    join rt in _repository.GetAll <RoomType>() on udp.RoomType equals rt.Value
                                    select new UserFavoriteData
                        {
                            Hour        = udp.Hour,
                            PhotoUrl    = rt.PhotoUrl,
                            Price       = udp.Price,
                            RoomType    = udp.RoomType.ToString(),
                            ServiceItem = udp.ServiceItems,
                            Squarefeet  = udp.Squarefeet.ToString(),
                            Title       = udp.Name
                        };

                        UserFavoriteViewModel ufVM = new UserFavoriteViewModel
                        {
                            Data       = query.ToList(),
                            FavoriteId = item.FavoriteId,
                            IsPackage  = item.IsPackage
                        };
                        packageslist.Add(ufVM);
                    }
                }
            }
            return(packageslist);
        }
Example #21
0
        public override void FetchAndFill(StringBuilder sb)
        {
            long   maxUnix  = (long)Math.Floor((GetMaxUnxi().AddHours(-8) - new DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds);
            string jsonData = GetRemoteDataFromUrl(DataUrlWithUnix.Replace("{unix}", maxUnix.ToString()), sb);

            PackageProduct <T> package = ConvertString2Object <T>(jsonData, sb);

            if (package.data.Count == 0)
            {
                //sb.Append(_tablename + " data Sync Rows:0 \n");
                return;
            }
            sb.Append("Source [Type: URL,  Address: " + DataUrlWithUnix.Replace("{unix}", maxUnix.ToString()) + "\n");
            if (package.code != 1)
            {
                throw new Exception("get data failed");
            }



            DataTable tb = CreateDataTableSchema(typeof(T));

            tb           = FillDataFromList(tb, package.data);
            tb.TableName = _tablename;
            int insertCount = 0;
            int updateCount = 0;

            //OracleConnection _conn = new OracleConnection(ConfigurationManager.AppSettings["CnECon"]);
            using (var con = new OracleConnection(ConfigurationManager.AppSettings["CnECon"]))
            {
                con.Open();
                OracleCommand cmd = new OracleCommand("", con);
                foreach (DataRow dr in tb.Rows)
                {
                    string existStr = "select count(*) from " + _tablename + " where id=" + dr["id"] +
                                      " and priceDate='" + dr["priceDate"] + "'";
                    cmd.CommandText = existStr;
                    int cmdresult = 0;
                    try
                    {
                        object obj = cmd.ExecuteScalar();
                        if (Equals(obj, null) || (Equals(obj, DBNull.Value)))
                        {
                        }
                        else
                        {
                            cmdresult = int.Parse(obj.ToString());
                        }
                    }
                    catch (OracleException e)
                    {
                        con.Close();
                        throw new Exception(e.Message);
                    }
                    string operationSql;
                    if (cmdresult == 0)
                    {
                        insertCount++;
                        operationSql = CreateInsertSql(_tablename, tb.Columns, dr);
                    }
                    else
                    {
                        updateCount++;
                        operationSql = CreateUpdateSql(_tablename, new[] { "id", "priceDate" }, tb.Columns, dr);
                    }
                    cmd.CommandText = operationSql;
                    try
                    {
                        cmd.ExecuteNonQuery();
                    }
                    catch (OracleException e)
                    {
                        con.Close();
                        throw new Exception(e.Message);
                    }
                }
                con.Close();
            }
            sb.Append("Table " + _tablename + " Insert Rows:" + insertCount + ",Update Rows:" + updateCount + " \r\n");
        }