public ActionResult Create(GroupCreateModel _GroupCreateModel) { List <CycleDays> _CycleDays = new List <CycleDays>(); List <Route> _Routes = new List <Route>(); Location _Location = repository.GetLocations().Where(l => l.id == _GroupCreateModel.LocationsId).FirstOrDefault(); CultureHelper _CultureHelper = new CultureHelper(repository); TimeZoneInfo TZone = _CultureHelper.GetTimeZoneInfo(_GroupCreateModel.LocationsId); DateTime LocalNow = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TZone); var currentUser = idb.Users.Find(User.Identity.GetUserId()); bool DayOfWeekSelected = false; if (_GroupCreateModel.BunchTime == null) { ModelState.AddModelError(string.Empty, "Please select a time"); _GroupCreateModel.Locations = repository.GetLocations().ToList(); _GroupCreateModel.LocationsId = _Location.id; this.ShowMessage(MessageType.Error, "Please select a time", true, MessagePosition.TopCentre, false); return(View(_GroupCreateModel)); } //Is a one off ride if (_GroupCreateModel.OneOff) { long msSinceEpoch = Convert.ToInt64(_GroupCreateModel.OneOffDateTime); // Value from Date.getTime() in JavaScript DateTime OneOffRideDateTime = new DateTime(1970, 1, 1).AddTicks(msSinceEpoch * 10000); //DateTime da = DateTime.ParseExact(OneOffRideDateTime, "dd/MM/yyyy", null); //DateTime _RideDate = da.Date.Add(new TimeSpan(_AdHocCreateModel.Hour, _AdHocCreateModel.Minute, 0)); //CycleDays NewDay = new CycleDays { DayOfWeek = OneOffRideDateTime.ToString("dddd") }; //_CycleDays.Add(NewDay); Group NewGroup = new Group { name = _GroupCreateModel.Name, RideTime = OneOffRideDateTime.Hour.ToString() + ":" + OneOffRideDateTime.Minute.ToString(), //RideDays = _CycleDays, Location = _Location, Rides = new List <Ride>(), Routes = new List <Route>(), AverageSpeed = _GroupCreateModel.AverageSpeed, StartLocation = _GroupCreateModel.StartLocation, Description = _GroupCreateModel.Description, RideHour = OneOffRideDateTime.Hour, RideMinute = OneOffRideDateTime.Minute, CreatedBy = currentUser.Id, ModifiedTimeStamp = LocalNow, CreatedTimeStamp = LocalNow, MapUrl = _GroupCreateModel.MapUrl, IsPrivate = _GroupCreateModel.IsPrivate, CreatedByName = _GroupCreateModel.CreatorName, Lat = _GroupCreateModel.lat, Lng = _GroupCreateModel.lng, RideDate = OneOffRideDateTime, Country = _GroupCreateModel.country, OneOff = true }; Ride OneOffRide = new Ride { Group = NewGroup, RideDate = OneOffRideDateTime, RideTime = NewGroup.RideTime }; NewGroup.Rides.Add(OneOffRide); //Routes:Need to update this so that it can be a dynamic number of routes if (_GroupCreateModel.Route1Desc != string.Empty) { Route _Route1 = new Route { Desc = _GroupCreateModel.Route1Desc, Group = NewGroup, MapURL = _GroupCreateModel.Route1URL }; _Routes.Add(_Route1); } if (_GroupCreateModel.Route2Desc != string.Empty) { Route _Route2 = new Route { Desc = _GroupCreateModel.Route2Desc, Group = NewGroup, MapURL = _GroupCreateModel.Route2URL }; _Routes.Add(_Route2); } if (_GroupCreateModel.Route3Desc != string.Empty) { Route _Route3 = new Route { Desc = _GroupCreateModel.Route3Desc, Group = NewGroup, MapURL = _GroupCreateModel.Route3URL }; _Routes.Add(_Route3); } NewGroup.Routes = _Routes; repository.AddGroup(NewGroup); repository.Save(); if (_GroupCreateModel.IsPrivate) { return(RedirectToAction("InviteOthersToPrivateBunch", "Group", new { GroupId = NewGroup.id })); } } //Is a recuring bunch else { foreach (DayOfWeekViewModel item in _GroupCreateModel.DaysOfWeek) { if (item.Checked) { CycleDays NewDay = new CycleDays { DayOfWeek = item.Name }; _CycleDays.Add(NewDay); DayOfWeekSelected = true; } } if (!DayOfWeekSelected) { ModelState.AddModelError(string.Empty, "Please select one or more days"); _GroupCreateModel.Locations = repository.GetLocations().ToList(); _GroupCreateModel.LocationsId = _Location.id; this.ShowMessage(MessageType.Error, "Please select one or more days", true, MessagePosition.TopCentre, false); return(View(_GroupCreateModel)); } string[] time = _GroupCreateModel.BunchTime.Split(':'); Group NewGroup = new Group { name = _GroupCreateModel.Name, RideTime = _GroupCreateModel.Hour.ToString() + ":" + _GroupCreateModel.Minute.ToString() + " " + _GroupCreateModel.AM_PM, RideDays = _CycleDays, Location = _Location, Rides = new List <Ride>(), Routes = new List <Route>(), AverageSpeed = _GroupCreateModel.AverageSpeed, StartLocation = _GroupCreateModel.StartLocation, Description = _GroupCreateModel.Description, RideHour = Convert.ToInt32(time[0]), RideMinute = Convert.ToInt32(time[1]), CreatedBy = currentUser.Id, ModifiedTimeStamp = LocalNow, CreatedTimeStamp = LocalNow, MapUrl = _GroupCreateModel.MapUrl, IsPrivate = _GroupCreateModel.IsPrivate, CreatedByName = _GroupCreateModel.CreatorName, Lat = _GroupCreateModel.lat, Lng = _GroupCreateModel.lng, Country = _GroupCreateModel.country, RideDate = DateTime.Now, OneOff = false }; //Routes:Need to update this so that it can be a dynamic number of routes if (_GroupCreateModel.Route1Desc != string.Empty) { Route _Route1 = new Route { Desc = _GroupCreateModel.Route1Desc, Group = NewGroup, MapURL = _GroupCreateModel.Route1URL }; _Routes.Add(_Route1); } if (_GroupCreateModel.Route2Desc != string.Empty) { Route _Route2 = new Route { Desc = _GroupCreateModel.Route2Desc, Group = NewGroup, MapURL = _GroupCreateModel.Route2URL }; _Routes.Add(_Route2); } if (_GroupCreateModel.Route3Desc != string.Empty) { Route _Route3 = new Route { Desc = _GroupCreateModel.Route3Desc, Group = NewGroup, MapURL = _GroupCreateModel.Route3URL }; _Routes.Add(_Route3); } NewGroup.Routes = _Routes; repository.AddGroup(NewGroup); repository.Save(); NewGroup = repository.PopulateRideDates(NewGroup, TZone); repository.Save(); if (_GroupCreateModel.IsPrivate) { return(RedirectToAction("InviteOthersToPrivateBunch", "Group", new { GroupId = NewGroup.id })); } } Task T = new Task(() => { UserHelper _UserHelp = new UserHelper(); _UserHelp.SendNewGroupCreated(_GroupCreateModel.Name); }); T.Start(); return(RedirectToAction("Index", "Group")); }
public ActionResult EditGroup(EditGroupModel _EditGroupModel) { var currentUser = idb.Users.Find(User.Identity.GetUserId()); List <CycleDays> _CycleDays = new List <CycleDays>(); Location _Location = repository.GetLocations() .Where(l => l.id == _EditGroupModel.LocationsId).FirstOrDefault(); CultureHelper _CultureHelper = new CultureHelper(repository); TimeZoneInfo TZone = _CultureHelper.GetTimeZoneInfo(currentUser.LocationID); DateTime LocalNow = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TZone); Group CurrentGroup = repository.GetGroupByID(_EditGroupModel.GroupId); if (!CurrentGroup.OneOff) { foreach (DayOfWeekViewModel item in _EditGroupModel.DaysOfWeek) { if (item.Checked) { CycleDays NewDay = new CycleDays { DayOfWeek = item.Name }; _CycleDays.Add(NewDay); } } Group UpdatedGroup = new Group { name = _EditGroupModel.Name, RideTime = _EditGroupModel.Hour.ToString() + ":" + _EditGroupModel.Minute.ToString(), RideDays = _CycleDays, Location = _Location, Rides = new List <Ride>(), AverageSpeed = _EditGroupModel.AverageSpeed, StartLocation = _EditGroupModel.StartLocation, RideHour = _EditGroupModel.Hour, RideMinute = _EditGroupModel.Minute, CreatedBy = CurrentGroup.CreatedBy, CreatedTimeStamp = CurrentGroup.CreatedTimeStamp, ModifiedTimeStamp = LocalNow, MapUrl = _EditGroupModel.MapUrl, Description = _EditGroupModel.Description, id = _EditGroupModel.GroupId, IsPrivate = _EditGroupModel.IsPrivate, CreatedByName = _EditGroupModel.CreatorName, OneOff = _EditGroupModel.IsOneOff, Routes = _EditGroupModel.Routes }; repository.UpdateGroup(UpdatedGroup); repository.Save(); repository.UpdateRideTimes(UpdatedGroup, TZone); repository.Save(); } else { Group UpdatedGroup = new Group { name = _EditGroupModel.Name, RideTime = _EditGroupModel.Hour.ToString() + ":" + _EditGroupModel.Minute.ToString(), Location = _Location, AverageSpeed = _EditGroupModel.AverageSpeed, StartLocation = _EditGroupModel.StartLocation, RideHour = _EditGroupModel.Hour, RideMinute = _EditGroupModel.Minute, CreatedBy = CurrentGroup.CreatedBy, CreatedTimeStamp = CurrentGroup.CreatedTimeStamp, ModifiedTimeStamp = LocalNow, MapUrl = _EditGroupModel.MapUrl, Description = _EditGroupModel.Description, id = _EditGroupModel.GroupId, IsPrivate = _EditGroupModel.IsPrivate, CreatedByName = _EditGroupModel.CreatorName, OneOff = _EditGroupModel.IsOneOff, Routes = _EditGroupModel.Routes }; string datestring = _EditGroupModel.Day.ToString("00") + "/" + _EditGroupModel.Month.ToString() + "/" + _EditGroupModel.Year.ToString() + " " + _EditGroupModel.Hour.ToString("00") + ":" + _EditGroupModel.Minute.ToString("00"); DateTime da = DateTime.ParseExact(datestring, "dd/MM/yyyy HH:mm", null); UpdatedGroup.RideDate = da; Ride RideToUpdate = repository.GetOneOffRideByGroupID(_EditGroupModel.GroupId); RideToUpdate.RideDate = da; repository.UpdateGroup(UpdatedGroup); repository.Save(); repository.UpdateRideTimes(UpdatedGroup, TZone); repository.Save(); } //Not needed if not able to change days would need to do some work here if allowed. //NewGroup = repository.PopulateRideDates(NewGroup); //repository.Save(); return(RedirectToAction("Index", "Group")); }