public IHttpActionResult GetCostCalculation(string condition, int userDemand)
        {
            using (var db = new DB_Context())
            {
                try
                {
                    var temp = db.Products.AsQueryable();
                    List <CostCalculationViewModel> listProduct = new List <CostCalculationViewModel>();
                    Dictionary <string, object>     result      = new Dictionary <string, object>();
                    temp = temp.Where(data => data.ProductType.Contains("TransportationServices"));

                    var listCostEntity = temp.AsEnumerable().ToList();
                    foreach (var item in listCostEntity)
                    {
                        CostCalculationViewModel productDet = new CostCalculationViewModel(item, condition, userDemand);

                        listProduct.Add(productDet);
                    }
                    ;
                    result.Add("Data", listProduct);

                    return(Ok(result));
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
Пример #2
0
        public async Task <IActionResult> Put([FromRoute] int id, [FromBody] CostCalculationViewModel viewModel)
        {
            try
            {
                VerifyUser();

                var existingData = await _service.IsDataExistsById(id);

                if (!existingData || id != viewModel.Id)
                {
                    var notFoundResult = new ResultFormatter(API_VERSION, (int)HttpStatusCode.NotFound, "Data Not Found!");
                    return(NotFound(notFoundResult));
                }

                _validateService.Validate(viewModel);
                var result = await _service.UpdateSingle(id, viewModel);

                return(NoContent());
            }
            catch (ServiceValidationException e)
            {
                var validationResult = new ResultFormatter(API_VERSION, (int)HttpStatusCode.BadRequest, "Data Does Not Pass Validation!").Fail(e);
                return(BadRequest(validationResult));
            }
            catch (Exception e)
            {
                var errorResult = new ResultFormatter(API_VERSION, (int)HttpStatusCode.InternalServerError, e.Message + "\n" + e.StackTrace).Fail();
                return(StatusCode((int)HttpStatusCode.InternalServerError, errorResult));
            }
        }
Пример #3
0
        public async Task <IActionResult> Post([FromBody] CostCalculationViewModel viewModel)
        {
            try
            {
                VerifyUser();

                _validateService.Validate(viewModel);
                var createModel = viewModel.MapViewModelToCreateModel();
                var result      = await _service.InsertSingle(createModel);

                return(Created($"{Request.Path}/{result}", new
                {
                    apiVersion = API_VERSION,
                    statusCode = (int)HttpStatusCode.Created,
                    message = "Data Created Successfully!"
                }));
            }
            catch (ServiceValidationException e)
            {
                var validationResult = new ResultFormatter(API_VERSION, (int)HttpStatusCode.BadRequest, "Data Does Not Pass Validation!").Fail(e);
                return(BadRequest(validationResult));
            }
            catch (Exception e)
            {
                var errorResult = new ResultFormatter(API_VERSION, (int)HttpStatusCode.InternalServerError, e.Message + "\n" + e.StackTrace).Fail();
                return(StatusCode((int)HttpStatusCode.InternalServerError, errorResult));
            }
        }
 public Task <int> UpdateSingle(int id, CostCalculationViewModel updateViewModel)
 {
     throw new NotImplementedException();
 }
        public ActionResult Costcalculation(string Origin, string Destination, string ServiceType, IList <string> PackagesTypeSizes, IList <decimal> Weights, int?NumOfPackages, string submit)
        {
            CostCalculationViewModel CostViewModel = new CostCalculationViewModel();

            CostViewModel.ServiceTypesList     = db.ServiceTypes.Select(a => a.Type).Distinct().ToList();
            CostViewModel.DestinationList      = db.Destinations.Select(a => a.City).Distinct().ToList();
            CostViewModel.OriginList           = db.Destinations.Select(a => a.City).Distinct().ToList();
            CostViewModel.PackageTypesSizeList = db.PakageTypeSizes.Select(a => a.size).Distinct().ToList();
            if (String.IsNullOrEmpty(submit) || NumOfPackages == null || NumOfPackages <= 0 || NumOfPackages > 10)
            {
                if (NumOfPackages <= 0)
                {
                    ViewBag.msg = "Package number can't smaller or equal zero";
                }
                else if (NumOfPackages > 10)
                {
                    ViewBag.msg = "Package number can't be greater than 10";
                }
                ViewBag.status = "initial";
                return(View(CostViewModel));
            }
            else if (submit == "Add Packages")
            {
                CostViewModel.Origin        = Origin;
                CostViewModel.Destination   = Destination;
                CostViewModel.ServiceType   = ServiceType;
                CostViewModel.NumOfPackages = (int)NumOfPackages;
                ViewBag.status = "Add Packages";
                return(View(CostViewModel));
            }
            else if (submit == "Calculate")
            {
                CostViewModel.PackagesTypeSizes = PackagesTypeSizes;
                CostViewModel.Weights           = Weights;
                CostViewModel.NumOfPackages     = (int)NumOfPackages;
                CostViewModel.Origin            = Origin;
                CostViewModel.Destination       = Destination;
                CostViewModel.ServiceType       = ServiceType;
                Dictionary <string, decimal>[] Prices     = new Dictionary <string, decimal> [(int)NumOfPackages];
                Dictionary <string, decimal>   TotalPrice = new Dictionary <string, decimal>();
                TotalPrice["CNY"] = 0;
                for (var i = 0; i < NumOfPackages; i += 1)
                {
                    if (!PackagesTypeSizes[i].Contains("Envenlope"))
                    {
                        //if (!Regex.IsMatch(Weights[i], "^\\d+(?:\\.\\d)?$"))
                        //{
                        //    ViewBag.status = "Add Packages";
                        //    ViewBag.msg = "Please input valid weight";
                        //    return View(CostViewModel);
                        //}
                        if (Weights[i] < 0 || Weights[i] > 99999)
                        {
                            ViewBag.status = "Add Packages";
                            ViewBag.msg    = "Weight can't be smaller than 0, or larger than 99999";
                            return(View(CostViewModel));
                        }
                    }
                    Prices[i]          = Calculate(ServiceType, PackagesTypeSizes[i], Weights[i]);
                    TotalPrice["CNY"] += Prices[i]["CNY"];
                }
                TotalPrice["HKD"]  = ConvertCurrency("HKD", TotalPrice["CNY"]);
                TotalPrice["MOP"]  = ConvertCurrency("MOP", TotalPrice["CNY"]);
                TotalPrice["TWD"]  = ConvertCurrency("TWD", TotalPrice["CNY"]);
                ViewBag.Prices     = Prices;
                ViewBag.TotalPrice = TotalPrice;
                ViewBag.status     = "Calculate";
                return(View(CostViewModel));
            }
            return(View());
        }