public LocationWithTimings LocationAdd(LocationWithTimings newLocation) { //var addedLocationTiming = ds.Timings.Add(mapper.Map<Timing>(newLocation.Timings)); var addedLocation = ds.Locations.Add(mapper.Map <Location>(newLocation)); addedLocation.Timing = new Timing { //timing addition MondayOpeningTime = newLocation.TimingMondayOpeningTime, MondayClosingTime = newLocation.TimingMondayClosingTime, TuesdayOpeningTime = newLocation.TimingTuesdayOpeningTime, TuesdayClosingTime = newLocation.TimingTuesdayClosingTime, WednesdayOpeningTime = newLocation.TimingWednesdayOpeningTime, WednesdayClosingTime = newLocation.TimingWednesdayClosingTime, ThursdayOpeningTime = newLocation.TimingThursdayOpeningTime, ThursdayClosingTime = newLocation.TimingThursdayClosingTime, FridayOpeningTime = newLocation.TimingFridayOpeningTime, FridayClosingTime = newLocation.TimingFridayClosingTime, SaturdayOpeningTime = newLocation.TimingSaturdayOpeningTime, SaturdayClosingTime = newLocation.TimingSaturdayClosingTime, SundayOpeningTime = newLocation.TimingSundayOpeningTime, SundayClosingTime = newLocation.TimingSundayClosingTime //timing addition end }; var latlng = LatLongCoordsDoubles(newLocation); addedLocation.Latitude = latlng[0]; addedLocation.Longitude = latlng[1]; ds.Timings.Add(addedLocation.Timing); ds.SaveChanges(); return(mapper.Map <LocationWithTimings>(addedLocation)); }
/* * Returns an arry of double of size 2 i.e. 0 and 1. * Each array index contains the data for the coordinates of a locaiton provided a variable * of type LocationWithTimings from which it will extract the necessary data to gives geo locaiton * coordinates * * 0 - Latitude * 1 - Longitude */ public double[] LatLongCoordsDoubles(LocationWithTimings data) { double[] coords = new double[2]; var addressFull = data.Address + "," + data.City + "," + data.PostalCode; //var address = "123 something st, somewhere"; var address = addressFull; var requestUri = $"http://maps.googleapis.com/maps/api/geocode/xml?address={Uri.EscapeDataString(address)}&sensor=false"; var request = WebRequest.Create(requestUri); var response = request.GetResponse(); var xdoc = XDocument.Load(response.GetResponseStream()); var result = xdoc.Element("GeocodeResponse")?.Element("result"); var locationElement = result?.Element("geometry")?.Element("location"); var lat = locationElement?.Element("lat"); var lng = locationElement?.Element("lng"); if (lat != null) { coords[0] = Convert.ToDouble(lat.Value); } if (lng != null) { coords[1] = Convert.ToDouble(lng.Value); } return(coords); }
public ActionResult Create(LocationWithTimings newLocation) { if (!ModelState.IsValid) { return(View(newLocation)); } var addedLocation = m.LocationAdd(newLocation); if (addedLocation == null) { return(View(newLocation)); } return(RedirectToAction("Details", new { id = addedLocation.LocationId })); }
public LocationWithTimings LocationEditExisting(LocationWithTimings newItem) { var data = ds.Locations.Include("Timing").SingleOrDefault(i => i.LocationId == newItem.LocationId); var time = ds.Timings.SingleOrDefault(i => i.TimingId == newItem.LocationId); if (data == null) { return(null); } if (time == null) { return(null); } var newTiming = new Timing { //timing addition TimingId = newItem.LocationId, MondayOpeningTime = newItem.TimingMondayOpeningTime, MondayClosingTime = newItem.TimingMondayClosingTime, TuesdayOpeningTime = newItem.TimingTuesdayOpeningTime, TuesdayClosingTime = newItem.TimingTuesdayClosingTime, WednesdayOpeningTime = newItem.TimingWednesdayOpeningTime, WednesdayClosingTime = newItem.TimingWednesdayClosingTime, ThursdayOpeningTime = newItem.TimingThursdayOpeningTime, ThursdayClosingTime = newItem.TimingThursdayClosingTime, FridayOpeningTime = newItem.TimingFridayOpeningTime, FridayClosingTime = newItem.TimingFridayClosingTime, SaturdayOpeningTime = newItem.TimingSaturdayOpeningTime, SaturdayClosingTime = newItem.TimingSaturdayClosingTime, SundayOpeningTime = newItem.TimingSundayOpeningTime, SundayClosingTime = newItem.TimingSundayClosingTime //timing addition end }; var latlng = LatLongCoordsDoubles(newItem); newItem.Latitude = latlng[0]; newItem.Longitude = latlng[1]; ds.Entry(time).CurrentValues.SetValues(newTiming); ds.Entry(data).CurrentValues.SetValues(newItem); //ds.Entry(data.Timing).CurrentValues.SetValues(newItem); ds.SaveChanges(); return(mapper.Map <LocationWithTimings>(data)); }
public ActionResult Edit(int?id, LocationWithTimings newItem) { if (!ModelState.IsValid) { return(RedirectToAction("Edit", new { id = newItem.LocationId })); } if (id.GetValueOrDefault() != newItem.LocationId) { return(RedirectToAction("Index")); } var editedItem = m.LocationEditExisting(newItem); if (editedItem == null) { return(RedirectToAction("Edit", new { id = newItem.LocationId })); } return(RedirectToAction("Index")); }