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; } } }
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)); } }
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()); }