private void ModifyCustomerOnSearch(object sender, Form.SubmittedEventArgs e) { if (!int.TryParse(e.Data.Get <string>("Customer ID"), out var customerId)) { e.Result = "Invalid ID"; return; } var customer = _crm.Customers.FirstOrDefault(c => c.Id == customerId); if (customer == null) { e.Result = "No customer with that ID"; return; } var modifyForm = ModifyCustomer.GetComponent <Form>("modify"); modifyForm.Set("ID", customerId.ToString()); modifyForm.Set("Title", customer.Title); modifyForm.Set("Given Names", customer.GivenNames); modifyForm.Set("Surname", customer.Surname); modifyForm.Set("Date of birth", customer.BirthDate.ToString("dd/MM/yyyy")); modifyForm.Set("Gender", customer.Gender); ModifyCustomer.ActiveComponent = "modify"; }
private void ModifyVehicleOnSearch(object sender, Form.SubmittedEventArgs e) { var rego = e.Data.Get <string>("Registration").ToUpper(); if (!RegoRegex.IsMatch(rego)) { e.Result = "Invalid rego"; return; } var vehicle = _fleet.Vehicles.FirstOrDefault(v => v.Registration == rego.ToUpper()); if (vehicle == null) { e.Result = "No vehicle with that rego"; return; } var modifyForm = ModifyVehicle.GetComponent <Form>("modify"); modifyForm.Set("Registration", rego); modifyForm.Set("Grade", vehicle.Grade); modifyForm.Set("Make", vehicle.Make); modifyForm.Set("Model", vehicle.Model); modifyForm.Set("Year", vehicle.Year.ToString()); modifyForm.Set("Seat count", vehicle.SeatCount.ToString()); modifyForm.Set("Transmission", vehicle.Transmission); modifyForm.Set("Fuel type", vehicle.Fuel); modifyForm.Set("Has GPS", vehicle.HasGps); modifyForm.Set("Has sunroof", vehicle.HasSunRoof); modifyForm.Set("Daily rate $", vehicle.DailyRate.ToString(CultureInfo.InvariantCulture)); modifyForm.Set("Colour", vehicle.Colour); ModifyVehicle.ActiveComponent = "modify"; }
private void DeleteVehicleOnSearch(object sender, Form.SubmittedEventArgs e) { var rego = e.Data.Get <string>("Registration").ToUpper(); if (!RegoRegex.IsMatch(rego)) { e.Result = "Invalid rego"; return; } if (_fleet.Vehicles.All(v => v.Registration != rego)) { e.Result = "No vehicle with that rego"; return; } if (_fleet.IsRented(rego)) { e.Result = "Vehicle is under rent"; return; } var vehicle = _fleet.Vehicles.First(v => v.Registration == rego); var confirmForm = DeleteVehicle.GetComponent <Form>("confirm"); confirmForm.Set("Registration", rego); confirmForm.Set("Make", vehicle.Make); confirmForm.Set("Model", vehicle.Model); confirmForm.Set("Year", vehicle.Year.ToString()); DeleteVehicle.ActiveComponent = "confirm"; }
private void DeleteCustomerOnSearch(object sender, Form.SubmittedEventArgs e) { if (!int.TryParse(e.Data.Get <string>("Customer ID"), out var customerId)) { e.Result = "Invalid ID"; return; } if (_crm.Customers.All(c => c.Id != customerId)) { e.Result = "No customer with that ID"; return; } if (_fleet.IsRenting(customerId)) { e.Result = "Customer still renting"; return; } var customer = _crm.Customers.First(c => c.Id == customerId); var confirmForm = DeleteCustomer.GetComponent <Form>("confirm"); confirmForm.Set("ID", customerId.ToString()); confirmForm.Set("Given Names", customer.GivenNames); confirmForm.Set("Surname", customer.Surname); confirmForm.Set("Date of birth", customer.BirthDate.ToString("dd/MM/yyyy")); DeleteCustomer.ActiveComponent = "confirm"; }
private void FleetSearchOnSearch(object sender, Form.SubmittedEventArgs e) { var options = _fleet.Vehicles.Select(v => new[] { new Tuple <string, Vehicle>(v.Registration.ToString(), v), new Tuple <string, Vehicle>(v.Grade.ToString(), v), new Tuple <string, Vehicle>(v.Make, v), new Tuple <string, Vehicle>(v.Model, v), new Tuple <string, Vehicle>(v.Year.ToString(), v), new Tuple <string, Vehicle>(v.SeatCount.ToString(), v), new Tuple <string, Vehicle>(v.Transmission.ToString(), v), new Tuple <string, Vehicle>(v.Fuel.ToString(), v), new Tuple <string, Vehicle>(v.HasGps ? "GPS" : "No GPS", v), new Tuple <string, Vehicle>(v.HasSunRoof ? "Sun roof" : "No sun roof", v), new Tuple <string, Vehicle>(v.Colour, v), new Tuple <string, Vehicle>($"{v.SeatCount} seats", v), }).SelectMany(it => it).ToArray(); if (e.Data.Get <string>("Search").IsEmpty()) { e.Result = "Enter a search term"; return; } var parser = new MrrcParser(e.Data.Get <string>("Search").ToUpperInvariant()); var result = parser.Parse(parser.Tokenise()); if (result is FailedParseResult <Expression> failure) { e.Result = failure.Message; return; } var success = (SuccessfulParseResult <Expression>)result; var matches = success.Result.Matches(options); var individualMatches = matches.Item1 .Select(it => it.Item2) .Distinct() .Where(it => !matches.Item2.Contains(it)) .ToArray(); if (individualMatches.Length == 0) { e.Result = "No results where found"; return; } var fleetList = FleetSearch.GetComponent <Form>("customer list"); fleetList.Set("Search", e.Data.Get <string>("Search")); fleetList.GetComponent <Select>("Results") .SetNewMembers(individualMatches.Select(m => m.ToString()).ToArray()); FleetSearch.ActiveComponent = "customer list"; }
private void DeleteVehicleOnSubmitted(object sender, Form.SubmittedEventArgs e) { if (!_fleet.RemoveVehicle(e.Data.Get <string>("Registration"))) { e.Result = "Could not delete"; } else { e.Result = "Deleted vehicle"; } }
private void ReturnVehicleOnSubmitted(object sender, Form.SubmittedEventArgs e) { var rego = e.Data.Get <string>("Registration").ToUpper(); var person = _fleet.ReturnVehicle(rego); if (person == -1) { e.Result = "Vehicle is not being rented"; return; } e.Result = "Successful"; }
private void CustomerSearchOnSearch(object sender, Form.SubmittedEventArgs e) { var options = _crm.Customers.Select(c => new[] { new Tuple <string, Customer>(c.Id.ToString(), c), new Tuple <string, Customer>(c.Title.ToString(), c), new Tuple <string, Customer>(c.GivenNames, c), new Tuple <string, Customer>(c.Surname, c), new Tuple <string, Customer>(c.Gender.ToString(), c) }).SelectMany(it => it).ToArray(); if (e.Data.Get <string>("Search").IsEmpty()) { e.Result = "Enter a search term"; return; } var parser = new MrrcParser(e.Data.Get <string>("Search").ToUpperInvariant()); var result = parser.Parse(parser.Tokenise()); if (result is FailedParseResult <Expression> failure) { e.Result = failure.Message; return; } var success = (SuccessfulParseResult <Expression>)result; var matches = success.Result.Matches(options); var individualMatches = matches.Item1 .Select(it => it.Item2) .Distinct() .Where(it => !matches.Item2.Contains(it)) .ToArray(); if (individualMatches.Length == 0) { e.Result = "No results where found"; return; } var customerList = CustomerSearch.GetComponent <Form>("customer list"); customerList.Set("Search", e.Data.Get <string>("Search")); customerList.GetComponent <Select>("Results") .SetNewMembers(individualMatches.Select(m => m.ToString()).ToArray()); CustomerSearch.ActiveComponent = "customer list"; }
private void AddCustomerOnSubmitted(object sender, Form.SubmittedEventArgs e) { if (!e.Data.TryGet("Title", out string title) || title.IsEmpty()) { e.Result = "Title is required"; return; } if (!e.Data.TryGet("Given Names", out string givenNames) || givenNames.IsEmpty()) { e.Result = "Given names are required"; return; } if (!e.Data.TryGet("Surname", out string surname) || surname.IsEmpty()) { e.Result = "Surname is required"; return; } if (!e.Data.TryGet("Date of birth", out string dobStr) || !DobRegex.IsMatch(dobStr)) { e.Result = "Invalid date of birth"; return; } if (!e.Data.TryGet("Gender", out Gender gender)) { e.Result = "Gender is required"; return; } var customer = new Customer { Title = title, GivenNames = givenNames, Surname = surname, Gender = gender, BirthDate = DateTime.ParseExact(dobStr, "dd/MM/yyyy", CultureInfo.InvariantCulture), Id = _crm.NextId() }; e.Result = _crm.AddCustomer(customer) ? $"Added customer {customer.Id}" : "Couldn't add customer"; }
private void RentVehicleOnSubmitted(object sender, Form.SubmittedEventArgs e) { var customerId = e.Data.Get <string>("Customer ID"); var vehicleRegistration = e.Data.Get <string>("Vehicle Rego").ToUpper(); if (!int.TryParse(customerId, out var customerIdNo)) { e.Result = "Invalid customer ID"; return; } if (_fleet.Vehicles.All(it => it.Registration != vehicleRegistration)) { e.Result = "Vehicle not found"; return; } if (_crm.Customers.All(it => it.Id != customerIdNo)) { e.Result = "Customer not found"; return; } if (_fleet.IsRented(vehicleRegistration)) { e.Result = "Vehicle is already rented"; return; } if (_fleet.IsRenting(customerIdNo)) { e.Result = "Customer is already renting"; return; } if (!_fleet.RentVehicle(vehicleRegistration, customerIdNo)) { e.Result = "Failed to rent vehicle"; return; } e.Result = $"Success ({_fleet.Vehicles.First(it => it.Registration == vehicleRegistration)}/d)"; }
private void ModifyCustomerOnSubmitted(object sender, Form.SubmittedEventArgs e) { if (!e.Data.TryGet("Title", out string title) || title.IsEmpty()) { e.Result = "Title is required"; return; } if (!e.Data.TryGet("Given Names", out string givenNames) || givenNames.IsEmpty()) { e.Result = "Given names are required"; return; } if (!e.Data.TryGet("Surname", out string surname) || surname.IsEmpty()) { e.Result = "Surname is required"; return; } if (!e.Data.TryGet("Date of birth", out string dobStr) || !DobRegex.IsMatch(dobStr)) { e.Result = "Invalid date of birth"; return; } if (!e.Data.TryGet("Gender", out Gender gender)) { e.Result = "Gender is required"; return; } var customer = _crm.Customers .First(c => c.Id == int.Parse(e.Data.Get <string>("ID"))); customer.Title = title; customer.GivenNames = givenNames; customer.Surname = surname; customer.BirthDate = DateTime.ParseExact(dobStr, "dd/MM/yyyy", CultureInfo.InvariantCulture); customer.Gender = gender; e.Result = "Successfully updated customer"; }
private void AddVehicleOnSubmitted(object sender, Form.SubmittedEventArgs e) { if (!e.Data.TryGet("Registration", out string rego) || !RegoRegex.IsMatch(rego)) { e.Result = "Invalid rego"; return; } if (!e.Data.TryGet("Grade", out VehicleGrade grade)) { e.Result = "Grade is required"; return; } if (!e.Data.TryGet("Make", out string make) || make.IsEmpty()) { e.Result = "Make is required"; return; } if (!e.Data.TryGet("Model", out string model) || make.IsEmpty()) { e.Result = "Model is required"; return; } if (!e.Data.TryGet("Year", out string yearStr) || yearStr.Length != 4 || !int.TryParse(yearStr, out var year)) { e.Result = "Year is invalid"; return; } if (!e.Data.TryGet("Seat count", out string seatCountStr) || !int.TryParse(seatCountStr.IsEmpty() ? "4" : seatCountStr, out var seatCount)) { e.Result = "Seat count is invalid"; return; } if (!e.Data.TryGet("Daily rate $", out string dailyRateStr) || !double.TryParse(dailyRateStr.IsEmpty() ? "50" : dailyRateStr, out var dailyRate)) { e.Result = $"Daily rate is invalid"; return; } if (!e.Data.TryGet("Colour", out string colour)) { e.Result = "Colour is required"; return; } if (colour.IsEmpty()) { colour = "Black"; } var vehicle = new Vehicle { Registration = rego.ToUpper(), Grade = grade, Make = make, Model = model, Year = year, SeatCount = seatCount, Transmission = e.Data.Get <TransmissionType>("Transmission"), Fuel = e.Data.Get <FuelType>("Fuel type"), HasGps = e.Data.Get <bool>("Has GPS"), HasSunRoof = e.Data.Get <bool>("Has sunroof"), DailyRate = dailyRate, Colour = colour }; e.Result = _fleet.AddVehicle(vehicle) ? "Added vehicle" : "Registration in use"; }
private void ModifyVehicleOnSubmit(object sender, Form.SubmittedEventArgs e) { if (!e.Data.TryGet("Grade", out VehicleGrade grade)) { e.Result = "Grade is required"; return; } if (!e.Data.TryGet("Make", out string make) || make.IsEmpty()) { e.Result = "Make is required"; return; } if (!e.Data.TryGet("Model", out string model) || make.IsEmpty()) { e.Result = "Model is required"; return; } if (!e.Data.TryGet("Year", out string yearStr) || yearStr.Length != 4 || !int.TryParse(yearStr, out var year)) { e.Result = "Year is invalid"; return; } if (!e.Data.TryGet("Seat count", out string seatCountStr) || !int.TryParse(seatCountStr.IsEmpty() ? "4" : seatCountStr, out var seatCount)) { e.Result = "Seat count is invalid"; return; } if (!e.Data.TryGet("Daily rate $", out string dailyRateStr) || !double.TryParse(dailyRateStr.IsEmpty() ? "50" : dailyRateStr, out var dailyRate)) { e.Result = $"Daily rate is invalid"; return; } if (!e.Data.TryGet("Colour", out string colour)) { e.Result = "Colour is required"; return; } if (colour.IsEmpty()) { colour = "Black"; } var vehicle = _fleet.Vehicles .First(v => v.Registration == e.Data.Get <string>("Registration")); vehicle.Grade = grade; vehicle.Make = make; vehicle.Model = model; vehicle.Year = year; vehicle.SeatCount = seatCount; vehicle.Transmission = e.Data.Get <TransmissionType>("Transmission"); vehicle.Fuel = e.Data.Get <FuelType>("Fuel type"); vehicle.HasGps = e.Data.Get <bool>("Has GPS"); vehicle.HasSunRoof = e.Data.Get <bool>("Has sunroof"); vehicle.DailyRate = dailyRate; vehicle.Colour = colour; e.Result = "Successfully updated vehicle"; }
private void DeleteCustomerOnSubmitted(object sender, Form.SubmittedEventArgs e) { e.Result = _crm.RemoveCustomer(int.Parse(e.Data.Get <string>("ID"))) ? "Deleted customer" : "Could not delete"; }