//tbl_vehicletype tv public ActionResult CreateVehicle(tbl_vehicletype tv) { VehicleViewModel vm = new VehicleViewModel { tblvehicle = new tbl_vehicle(), tblehicletype = tv, tblcar = new tbl_Car(), tblbike = new tbl_bike() }; ViewBag.Vehiclename = tv.Vehicle_type_name; if (tv.ID == 1) { List <VehicleBodyType> items = new List <VehicleBodyType>() { new VehicleBodyType() { text = "Hatchback", Body_type = "Hatchback" }, new VehicleBodyType() { text = "Sedan", Body_type = "Sedan" } }; ViewBag.Body_type = new SelectList(items, "text", "Body_type"); } if (tv.ID == 2) { List <string> items = new List <string>(); items.Add("Kick"); items.Add("Self"); ViewBag.Type_of_start = items; } return(View(vm)); }
public List <transportation> getbesttcost(decimal distance, decimal totalweight = 0) { decimal cost = 0, mintotalcost = 0, number = 0, totalcost = 0; int number1 = 0; tbl_vehicletype veh1 = new tbl_vehicletype(); tbl_vehicletype veh2 = new tbl_vehicletype(); List <tbl_vehicletype> lstveh = new List <tbl_vehicletype>(); List <tbl_vehicletype> lstveh2 = new List <tbl_vehicletype>(); decimal selectedcapacity, selectedcapacity2, capacitydif = 0, capacitydif2 = 0, remainingweight = 0; int selectedveh1 = 0; List <transportation> tlst = new List <transportation>(); foreach (var item in db.tbl_vehicletype) { capacitydif = totalweight - item.capacity.Value; if (capacitydif > 0) { lstveh.Add(item); } } if (lstveh.Count() > 0) { selectedcapacity = lstveh.Max(a => a.capacity.Value); var vehsel1 = db.tbl_vehicletype.Where(a => a.capacity > selectedcapacity); if (vehsel1.Count() > 0) { decimal selectedcapacityasl = vehsel1.Min(a => a.capacity.Value); veh1 = vehsel1.Where(a => a.capacity == selectedcapacityasl).SingleOrDefault(); } else { veh1 = db.tbl_vehicletype.OrderByDescending(a => a.capacity.Value).FirstOrDefault(); } } else { veh1 = db.tbl_vehicletype.OrderBy(a => a.capacity.Value).FirstOrDefault(); } transportation t1 = new transportation(); t1.number = Math.Floor(totalweight / veh1.capacity.Value) == 0 ? 1 : Math.Floor(totalweight / veh1.capacity.Value); number = t1.number; cost = (Math.Floor(veh1.factor.Value * distance) > db.tbl_vehicletype.Where(a => a.id == veh1.id).SingleOrDefault().mincost.Value) ? Math.Floor(veh1.factor.Value * distance) : db.tbl_vehicletype.Where(a => a.id == veh1.id).SingleOrDefault().mincost.Value; t1.cost = cost.ToString(); totalcost = (t1.number * Convert.ToDecimal(cost)); t1.totalcost = totalcost.ToString(); t1.vehicletype = veh1.vehiclename; t1.vehicletypeid = veh1.id; t1.distance = distance.ToString() + " km"; t1.address = "نحوه حمل پیشنهادی" + "= " + "حداقل کرایه کل"; tlst.Add(t1); remainingweight = totalweight - (number * veh1.capacity.Value); if (remainingweight > 0) { foreach (var item2 in db.tbl_vehicletype) { capacitydif2 = remainingweight - item2.capacity.Value; if (capacitydif2 < 0) { lstveh2.Add(item2); } } if (lstveh2.Count() > 0) { selectedcapacity2 = lstveh2.Min(a => a.capacity.Value); veh2 = lstveh.Where(a => a.capacity == selectedcapacity2).SingleOrDefault(); transportation t2 = new transportation(); t2.number = Math.Ceiling(remainingweight / veh2.capacity.Value); cost = (Math.Floor(veh2.factor.Value * distance) > db.tbl_vehicletype.Where(a => a.id == veh2.id).SingleOrDefault().mincost.Value) ? Math.Floor(veh2.factor.Value * distance) : db.tbl_vehicletype.Where(a => a.id == veh2.id).SingleOrDefault().mincost.Value; t2.cost = cost.ToString(); totalcost = (t2.number * Convert.ToDecimal(cost)); t2.totalcost = totalcost.ToString(); t2.vehicletype = veh2.vehiclename; t2.vehicletypeid = veh2.id; t2.distance = distance.ToString() + " km"; t2.address = "نحوه حمل پیشنهادی" + "= " + "حداقل کرایه کل"; tlst.Add(t2); } else { transportation t2 = new transportation(); t2.number = 1; cost = (Math.Floor(db.tbl_vehicletype.FirstOrDefault().factor.Value *distance) > db.tbl_vehicletype.FirstOrDefault().mincost.Value) ? Math.Floor(db.tbl_vehicletype.FirstOrDefault().factor.Value *distance) : db.tbl_vehicletype.FirstOrDefault().mincost.Value; t2.cost = cost.ToString(); totalcost = (1 * Convert.ToDecimal(cost)); t2.totalcost = totalcost.ToString(); t2.vehicletype = db.tbl_vehicletype.FirstOrDefault().vehiclename; t2.vehicletypeid = veh2.id; t2.distance = distance.ToString() + " km"; t2.address = "نحوه حمل پیشنهادی" + "= " + "حداقل کرایه کل"; tlst.Add(t2); } } return(tlst); }