/// <summary> /// Stores the information and proceeds to PayPal payment page. /// </summary> protected void PayPalBtn_Click(object sender, EventArgs e) { try { AddressManager address; long vehicleAvailableID, locationID, customerID; DateTime hireStart, hireEnd; NVPAPICaller payPalCaller = new NVPAPICaller(); string retMsg = ""; string token = ""; double totalDays, totalCost; address = (AddressManager)Session["Address"]; vehicleAvailableID = (long)Session["VehicleAvailableID"]; locationID = (long)Session["LocationID"]; hireStart = (DateTime)Session["StartTime"]; hireEnd = (DateTime)Session["EndTime"]; customerID = (long)Session["CustomerID"]; VehicleManager vehicle = VehicleManager.GetAvailableVehicles(locationID).Where(x => x.VehicleAvailableID == vehicleAvailableID).SingleOrDefault(); totalDays = (hireEnd - hireStart).TotalDays; totalCost = totalDays * vehicle.BasePrice; totalCost = Math.Round(totalCost, 2); //Round to 2 dp bool ret = payPalCaller.ShortcutExpressCheckout(totalCost.ToString(), ref token, ref retMsg, vehicle.Manufacturer + " " + vehicle.Model, vehicle.Currency); if (ret) { Session["token"] = token; Response.Redirect(retMsg, false); } orderConfirmedLbl.Text = "Order Created"; } catch (Exception ex) { generalErrorLbl.Text = "An error has occured saying: " + ex.Message + " Please contact your system administrator."; } }
/// <summary> /// Loads the information about the order from the session variables which were stored from the review order page. /// </summary> private void LoadInformation(ref VehicleManager vehicle, ref double totalDays, ref double totalCost, ref DateTime hireStart, ref DateTime hireEnd, ref AddressManager address, ref CustomerManager customer, ref LocationManager location) { long vehicleAvailableID, locationID, customerID; bool useLocation; address = (AddressManager)Session["Address"]; vehicleAvailableID = (long)Session["VehicleAvailableID"]; locationID = (long)Session["LocationID"]; hireStart = (DateTime)Session["StartTime"]; hireEnd = (DateTime)Session["EndTime"]; customerID = (long)Session["CustomerID"]; useLocation = (bool)Session["UseLocation"]; customer = CustomerManager.GetCustomers().Where(x => x.CustomerID == customerID).SingleOrDefault(); vehicle = VehicleManager.GetAvailableVehicles(locationID).Where(x => x.VehicleAvailableID == vehicleAvailableID).SingleOrDefault(); location = LocationManager.GetLocations().Where(x => x.LocationID == locationID).SingleOrDefault(); totalDays = (hireEnd - hireStart).TotalDays; totalCost = totalDays * vehicle.BasePrice; totalCost = Math.Round(totalCost, 2); //Round to 2 dp }
private void LoadAvailableVehicles() { List <VehicleManager> vehiclesAvailable = new List <VehicleManager>(); string manufacturer, model, SIPPCodeStr, currency; double MPG, basePrice; long locationID = 0; SIPPCode sizeOfVehicleSIPPCode, noOfDoorsSIPPCode, transmissionAndDriveSIPPCode, fuelAndACSIPPCode; Button bookVehicle; TableRow row; if (locationDdl.SelectedValue != "") { locationID = Convert.ToInt32(locationDdl.SelectedValue.Split(',')[0]); //Filter by using the ID from the location ddl vehiclesAvailable = VehicleManager.GetAvailableVehicles(locationID).Where(x => x.Active == true).ToList(); } foreach (VehicleManager vehicle in vehiclesAvailable) { row = new TableRow(); Image vehicleImg = new Image(); TableCell cell = new TableCell(); vehicleImg.ImageUrl = vehicle.ImageLoc; vehicleImg.AlternateText = vehicle.Manufacturer + " " + vehicle.Model; //make standard size of car images 270x150 vehicleImg.Width = Variables.STANDARDWIDTH; vehicleImg.Height = Variables.STANDARDHEIGHT; cell.Controls.Add(vehicleImg); row.Cells.Add(cell); vehiclesAvailableTbl.Rows.Add(row); manufacturer = vehicle.Manufacturer; model = vehicle.Model; MPG = vehicle.MPG; SIPPCodeStr = vehicle.SIPPCode; currency = vehicle.Currency; AddCell(row, manufacturer + " " + model + "<br />MPG: " + MPG.ToString() + "<br />SIPP: " + SIPPCodeStr); //Gets SIPP Code descriptions for all letters of SIPP code for this car sizeOfVehicleSIPPCode = SIPPCode.GetSIPPCodeDesc(Variables.SIZEOFVEHICLE, vehicle.SIPPCode[0].ToString()); noOfDoorsSIPPCode = SIPPCode.GetSIPPCodeDesc(Variables.NOOFDOORS, vehicle.SIPPCode[1].ToString()); transmissionAndDriveSIPPCode = SIPPCode.GetSIPPCodeDesc(Variables.TRANSMISSIONANDDRIVE, vehicle.SIPPCode[2].ToString()); fuelAndACSIPPCode = SIPPCode.GetSIPPCodeDesc(Variables.FUELANDAC, vehicle.SIPPCode[3].ToString()); cell = new TableCell(); Label label = new Label(); label.Text = sizeOfVehicleSIPPCode.Description + "<br />"; cell.Controls.Add(label); label = new Label(); label.Text = noOfDoorsSIPPCode.Description + "<br />"; cell.Controls.Add(label); label = new Label(); label.Text = transmissionAndDriveSIPPCode.Description + "<br />"; cell.Controls.Add(label); label = new Label(); label.Text = fuelAndACSIPPCode.Description + "<br />"; cell.Controls.Add(label); row.Cells.Add(cell); basePrice = vehicle.BasePrice; AddCell(row, currency + ": " + basePrice.ToString()); //Book button to book selected car bookVehicle = new Button(); bookVehicle.ID = locationID + "_" + vehicle.VehicleAvailableID + "_BookBtn"; bookVehicle.Text = "Book"; bookVehicle.CssClass = "btn btn-primary"; bookVehicle.Click += new EventHandler(BookVehicleBtn_Click); if (Session["LoggedInType"] != null) { if (Session["LoggedInType"].ToString() == "") { bookVehicle.OnClientClick = "return alert('Please login to continue');"; } } else { bookVehicle.OnClientClick = "return alert('Please login to continue');"; } cell = new TableCell(); cell.Controls.Add(bookVehicle); row.Cells.Add(cell); vehiclesAvailableTbl.Rows.Add(row); } }
/// <summary> /// Adds a new vehicle to be listed against this location as available to book. /// </summary> protected void AddAvailableVehiclesBtn_Click(object sender, EventArgs e) { try { List <VehicleManager> vehiclesAvailable = new List <VehicleManager>(); bool validEntries = true; long vehicleID = 0; long locationID = 0; int totalVehicles = 0; int userID = 0; double basePrice = 0; string currency; #region checkValidity if (locationDdl.SelectedValue != "") { locationID = Convert.ToInt32(locationDdl.SelectedValue.Split(',')[0]); vehiclesAvailable = VehicleManager.GetAvailableVehicles(locationID); } else { validEntries = false; inputErrorLbl.Text = inputErrorLbl.Text + "Please select a location. <br />"; } if (vehicleDdl.SelectedValue != "") { vehicleID = Convert.ToInt32(vehicleDdl.SelectedValue.Split(',')[0]); } else { validEntries = false; inputErrorLbl.Text = inputErrorLbl.Text + "Please select a vehicle. <br />"; } if (Regex.IsMatch(totalVehiclesTxt.Text, @"^[0-9]*$")) { totalVehicles = Convert.ToInt32(totalVehiclesTxt.Text); } else { validEntries = false; inputErrorLbl.Text = inputErrorLbl.Text + "Please enter a whole number for total vehicles. <br />"; } if (currencyDdl.SelectedValue != "") { currency = currencyDdl.SelectedValue; } else { currency = ""; validEntries = false; inputErrorLbl.Text = inputErrorLbl.Text + "Please enter a currency. <br />"; } if (Variables.CheckDecimal(basePriceTxt.Text)) { basePrice = Convert.ToDouble(basePriceTxt.Text); } else { validEntries = false; inputErrorLbl.Text = inputErrorLbl.Text + "Please enter a base price in currency format. <br />"; } foreach (VehicleManager vehicle in vehiclesAvailable) { if (vehicle.VehicleID == vehicleID) { validEntries = false; inputErrorLbl.Text = inputErrorLbl.Text + "This vehicle is already assigned to this location. Please select another. <br />"; } } if (Response.Cookies["UserID"].Value != null) { userID = Convert.ToInt32(Response.Cookies["UserID"].Value); } else if (Session["UserID"] != null) { userID = Convert.ToInt32(Session["UserID"]); } else { validEntries = false; inputErrorLbl.Text = "Not logged in. Please login to continue"; } #endregion if (validEntries == true) { VehicleManager.InsertNewAvailableVehicle(vehicleID, locationID, totalVehicles, currency, basePrice, userID, (int)UserAccess.UserType.company); vehicleAddedLbl.Text = "New available vehicle added."; } } catch (Exception ex) { generalErrorLbl.Text = "An error has occured saying: " + ex.Message + " Please contact your system administrator."; } }