private HfedScheduleViewModel GetDropDownData(HfedScheduleViewModel schedule) { schedule.HfedProviders = db.HfedProviders.OrderBy(p => p.Name).ToList(); schedule.HfedClients = db.HfedClients.Where(c => c.Active && c.Location.Id == schedule.Location.Id).OrderBy(c => c.LastName).ToList(); schedule.HfedDrivers = new List <ApplicationUser>(); schedule.HfedStaffs = new List <ApplicationUser>(); schedule.HfedLocations = db.HfedLocations.OrderBy(l => l.Name).ToList(); var allUsers = db.Users.OrderBy(n => n.LastName).ToList(); foreach (var user in allUsers) { if (UserIsInRole(user.Id, "HfedStaff")) { schedule.HfedStaffs.Add(user); } if (UserIsInRole(user.Id, "HfedDriver")) { schedule.HfedDrivers.Add(user); } } return(schedule); }
private HfedScheduleViewModel CheckForDuplicateClient(HfedScheduleViewModel schedule) { // Check for duplicate clients on same day var otherSchedules = db.HfedSchedules.Where(s => s.Date == schedule.Date && s.Id != schedule.Id).ToList(); if (otherSchedules.Count > 0 && schedule.HfedClientsArray != null) { foreach (HfedSchedule otherSched in otherSchedules) { otherSched.HfedClientsArray = otherSched.HfedClientIds.Split(',').ToArray(); foreach (var c in otherSched.HfedClientsArray) { foreach (var c1 in schedule.HfedClientsArray) { if (c == c1 && !c1.IsNullOrEmpty()) { HfedClient dupClient = db.HfedClients.Find(Convert.ToInt32(c)); if (dupClient != null) { schedule.ErrorMessage = dupClient.FullName + " is already selected in another run on " + otherSched.Date.ToShortDateString(); schedule = GetDropDownData(schedule); return(schedule); // (for error functions) } } } } } } return(schedule); }
// GET: HfedSchedules/Create public ActionResult Create() { Session["OriginalClientIds"] = ""; HfedScheduleViewModel newHfedSchedule = new HfedScheduleViewModel() { Date = Convert.ToDateTime(Session["StartDate"]), HfedProviders = db.HfedProviders.OrderBy(p => p.Name).ToList(), HfedLocations = db.HfedLocations.OrderBy(l => l.Name).ToList(), HfedClients = new List <HfedClient>(), HfedDrivers = new List <ApplicationUser>(), HfedStaffs = new List <ApplicationUser>(), HfedClientsArray = new string[1], Request = false, Complete = false, Households = 0, Approved = false }; var allUsers = db.Users.OrderBy(n => n.LastName).ToList(); foreach (ApplicationUser user in allUsers) { if (UserIsInRole(user.Id, "HfedDriver")) { newHfedSchedule.HfedDrivers.Add(user); } if (UserIsInRole(user.Id, "HfedStaff")) { newHfedSchedule.HfedStaffs.Add(user); } } return(View(newHfedSchedule)); }
public ActionResult DriverSignUp([Bind(Include = "HfedScheds")] HfedScheduleViewModel schedules) { foreach (var sched in schedules.HfedScheds) { if (sched.SignUp) { using (var context = new SenecaContext()) { string cmdString = "UPDATE HfedSchedule SET "; cmdString += "Driver_Id='" + User.Identity.GetUserId() + "' "; cmdString += " WHERE Id=" + sched.Id; context.Database.ExecuteSqlCommand(cmdString); // Send email to driver //"You have signed up to deliver food from - to on date." } } if (sched.Cancel) { using (var context = new SenecaContext()) { string cmdString = "UPDATE HfedSchedule SET "; cmdString += "HfedDriverIds='',Driver_Id=null"; cmdString += " WHERE Id=" + sched.Id; context.Database.ExecuteSqlCommand(cmdString); // Send email to driver //"You have unchecked your delivery on date." } } } return(RedirectToAction("DriverSignUp")); }
public ActionResult Edit([Bind(Include = "Id,Date,PickUpTime,Provider,Location,PointPerson," + "ScheduleNote,Driver,Request,Complete,Households,Approved," + "HfedDriversArray,HfedClientsArray,VolunteerHours")] HfedScheduleViewModel hfedSchedule) { hfedSchedule.HfedClientIds = hfedSchedule.HfedClientsArray.IsNullOrEmpty() ? string.Empty : string.Join(",", hfedSchedule.HfedClientsArray ?? throw new InvalidOperationException()); hfedSchedule = CheckForDuplicateClient(hfedSchedule); if (hfedSchedule != null && !hfedSchedule.ErrorMessage.IsNullOrEmpty()) { hfedSchedule = GetDropDownData(hfedSchedule); return(View(hfedSchedule)); // (for error functions) } //EF not adding blank Foreign Key records: use raw SQL if (hfedSchedule != null) { var query = @"UPDATE HfedSchedule" + " SET Date=@Date,PickUpTime=@PickUpTime,ScheduleNote=@ScheduleNote," + "Request=@Request,Complete=@Complete,Households=@Households," + "Approved=@Approved,Location_Id=@Location_Id," + "PointPerson_Id=@PointPerson_Id,Driver_Id=@Driver_Id,Provider_Id=@Provider_Id," + "HfedDriverIds=@HfedDriverIds,HfedClientIds=@HfedClientIds," + "VolunteerHours=@VolunteerHours" + " WHERE Id = " + hfedSchedule.Id; db.Database.ExecuteSqlCommand(query, new SqlParameter("@Date", hfedSchedule.Date.ToShortDateString()), new SqlParameter("@PickUpTime", hfedSchedule.PickUpTime + ""), new SqlParameter("@ScheduleNote", hfedSchedule.ScheduleNote + ""), new SqlParameter("@Request", hfedSchedule.Request ? 1 : 0), new SqlParameter("@Complete", hfedSchedule.Complete ? 1 : 0), new SqlParameter("@Households", hfedSchedule.Households), new SqlParameter("@Approved", hfedSchedule.Approved ? 1 : 0), new SqlParameter("@Location_Id", hfedSchedule.Location.Id), new SqlParameter("@PointPerson_Id", hfedSchedule.PointPerson.Id), new SqlParameter("@Driver_Id", hfedSchedule.Driver.Id + ""), new SqlParameter("@Provider_Id", hfedSchedule.Provider.Id), new SqlParameter("@HfedDriverIds", "'" + hfedSchedule.HfedDriversArray + "'"), new SqlParameter("@HfedClientIds", hfedSchedule.HfedClientIds), new SqlParameter("@VolunteerHours", Math.Abs((hfedSchedule.VolunteerHours ?? 0)) < .01 ? 0 : hfedSchedule.VolunteerHours)); } var usrId = User.Identity.GetUserId(); var allUsers = db.Users.ToList(); foreach (ApplicationUser user in allUsers) { if (UserIsInRole(user.Id, "ReceiveHfedScheduleChangeEmail")) { var recipientId = user.Id; // Email Lynn Rose that an update has occurred (01/15/2020) if (hfedSchedule != null) { var unused = EmailHFEDScheduleChange(usrId, hfedSchedule.Id, hfedSchedule.Provider.Id, recipientId); } } } return(RedirectToAction("Index")); }
public ActionResult DriverSignUp([Bind(Include = "HfedScheds")] HfedScheduleViewModel schedules) { //*** Check for changes in schedules before updating: this routine triggers emails. bool changesMade = false; foreach (var sched in schedules.HfedScheds) { HfedSchedule existingSched = db.HfedSchedules.FirstOrDefault(i => i.Id == sched.Id); if (existingSched != null && sched.Cancel != existingSched.Cancel || existingSched != null && sched.SignUp != existingSched.SignUp) { changesMade = true; break; } } if (!changesMade) { return(RedirectToAction("DriverSignUp")); } foreach (var sched in schedules.HfedScheds) { var driverId = User.Identity.GetUserId(); if (sched.SignUp) { string cmdString = "UPDATE HfedSchedule SET "; cmdString += "Driver_Id='" + driverId + "' WHERE Id=" + sched.Id; db.Database.ExecuteSqlCommand(cmdString); string strSql = "SELECT Provider_Id FROM HfedSchedule WHERE Id = " + sched.Id; int providerId = db.Database.SqlQuery <int>(strSql).FirstOrDefault(); strSql = "SELECT Location_Id FROM HfedSchedule WHERE Id = " + sched.Id; int locationId = db.Database.SqlQuery <int>(strSql).FirstOrDefault(); var unused = EmailDriverSignup(driverId, sched.Id, providerId, locationId, driverId, true); } if (sched.Cancel) { string cmdString = "UPDATE HfedSchedule SET "; cmdString += "Driver_Id='" + null + "' WHERE Id=" + sched.Id; db.Database.ExecuteSqlCommand(cmdString); string strSql = "SELECT Provider_Id FROM HfedSchedule WHERE Id = " + sched.Id; int providerId = db.Database.SqlQuery <int>(strSql).FirstOrDefault(); strSql = "SELECT Location_Id FROM HfedSchedule WHERE Id = " + sched.Id; int locationId = db.Database.SqlQuery <int>(strSql).FirstOrDefault(); var unused = EmailDriverSignup(driverId, sched.Id, providerId, locationId, driverId, false); } } return(RedirectToAction("DriverSignUp")); }
// GET: HfedSchedules/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var sqlString = "SELECT * FROM hfedSchedule WHERE Id =" + id; var scheduletoEdit = db.Database.SqlQuery <HfedScheduleViewModel>(sqlString).FirstOrDefault(); if (scheduletoEdit == null) { return(HttpNotFound()); } // OriginalClientIds are kept for use by HfedClients/GetClients; if the user inadverently changes Location, // the original selections (if any) will be reinstated when returning to the original Location. Session["OriginalClientIds"] = scheduletoEdit.HfedClientIds; var Loc = db.HfedLocations.Find(scheduletoEdit.Location_Id); var hfedSchedule = new HfedScheduleViewModel { Location_Id = scheduletoEdit.Location_Id, Location = Loc, Date = scheduletoEdit.Date, PickUpTime = scheduletoEdit.PickUpTime, ScheduleNote = scheduletoEdit.ScheduleNote, Request = scheduletoEdit.Request, Complete = scheduletoEdit.Complete, Households = scheduletoEdit.Households, Approved = scheduletoEdit.Approved, HfedDriverIds = scheduletoEdit.HfedDriverIds, HfedClientIds = scheduletoEdit.HfedClientIds, VolunteerHours = scheduletoEdit.VolunteerHours }; hfedSchedule.Location = db.HfedLocations.Find(scheduletoEdit.Location_Id); hfedSchedule.PointPerson = db.Users.Find(scheduletoEdit.PointPerson_Id); if (!scheduletoEdit.Driver_Id.IsNullOrEmpty()) { hfedSchedule.Driver = db.Users.Find(scheduletoEdit.Driver_Id); hfedSchedule.DriverFullName = hfedSchedule.Driver.FullName; } else { hfedSchedule.DriverFullName = "Nobody Yet"; } hfedSchedule.Provider = db.HfedProviders.Find(scheduletoEdit.Provider_Id); hfedSchedule.HfedDriversArray = hfedSchedule.HfedDriverIds.Split(',').ToArray(); hfedSchedule.HfedClientsArray = hfedSchedule.HfedClientIds.Split(',').ToArray(); hfedSchedule = GetDropDownData(hfedSchedule); return(View(hfedSchedule)); }
// GET: DriverSignUp public ActionResult DriverSignUp() { // Set Sign-Up month: if inside the last week of a month, then next month. GetDriverDateRange(out DateTime startDate, out DateTime endDate); //var start = DateTime.Today; //int days = DateTime.DaysInMonth(start.Year, start.Month); //if (start.Day > days - 7) // In the last 6 days //{ // start = start.AddMonths(1); //} //start = new DateTime(start.Year, start.Month, 1); //var end = new DateTime(start.Year, start.Month, days); var scheduleList = db.HfedSchedules.Where (s => s.Date >= startDate && s.Date <= endDate).OrderBy(s => s.Date).ToList(); HfedScheduleViewModel hfedSchedule = new HfedScheduleViewModel { UserIsOnSchedule = false, HfedScheds = new List <HfedSchedule>() }; var usr = db.Users.Find(User.Identity.GetUserId()); hfedSchedule.DriverFullName = usr.FullName; foreach (HfedSchedule sched in scheduleList) { string strSql = "SELECT * FROM HfedSchedule WHERE Id = " + sched.Id; var schedData = db.Database.SqlQuery <HfedScheduleViewModel>(strSql).FirstOrDefault(); if (schedData != null) { strSql = "SELECT * FROM HfedLocation WHERE Id = " + schedData.Location_Id; sched.Location = db.Database.SqlQuery <HfedLocation>(strSql).FirstOrDefault(); sched.PointPerson = db.Users.Find(schedData.PointPerson_Id); strSql = "SELECT * FROM HfedProvider WHERE Id = " + schedData.Provider_Id; sched.Provider = db.Database.SqlQuery <HfedProvider>(strSql).FirstOrDefault(); sched.HfedDriversArray = schedData.HfedDriverIds.Split(',').ToArray(); sched.HfedClientsArray = schedData.HfedClientIds.Split(',').ToArray(); sched.HfedDrivers = new List <ApplicationUser>(); var did = schedData.Driver_Id; if (!did.IsNullOrEmpty()) { sched.Driver = db.Users.Find(did); if (sched.Driver.UserName == User.Identity.Name) { hfedSchedule.DriverFullName = sched.Driver.FullName; hfedSchedule.UserIsOnSchedule = true; } } } var allUsers = db.Users.OrderBy(n => n.FirstName).ToList(); foreach (ApplicationUser user in allUsers) { if (UserIsInRole(user.Id, "HfedDriver")) { sched.HfedDrivers.Add(user); } } // Convert viewmodel schedule to hfedschedule to add: var hfedSched = new HfedSchedule { Id = sched.Id, Date = sched.Date, PickUpTime = sched.PickUpTime, Location = sched.Location, PointPerson = sched.PointPerson, Provider = sched.Provider, HfedDriversArray = sched.HfedDriversArray, HfedClientsArray = sched.HfedClientsArray, HfedDrivers = sched.HfedDrivers, SignUp = false, Cancel = false, Driver = sched.Driver, DriverName = sched.DriverName, FormattedDay = sched.Date.ToString("ddd"), FormattedDate = sched.Date.ToString("MM/dd/yy") }; hfedSchedule.HfedScheds.Add(hfedSched); } return(View(hfedSchedule)); }
public ActionResult Create([Bind(Include = "Id,Date,PickUpTime,Provider,Location,PointPerson," + "ScheduleNote,Driver,Request,Complete,Households,Approved," + "HfedDriversArray,HfedClientsArray,VolunteerHours")] HfedScheduleViewModel hfedSchedule) { if (hfedSchedule.PointPerson.Id == null || hfedSchedule.Location.Id == 0 || hfedSchedule.Provider.Id == 0) { hfedSchedule = GetDropDownData(hfedSchedule); // Reload dropdown lists if (hfedSchedule.PointPerson.Id == null) { hfedSchedule.ErrorMessage = "Point Person required"; } if (hfedSchedule.Location.Id == 0) { hfedSchedule.ErrorMessage = "Location required"; } if (hfedSchedule.Provider.Id == 0) { hfedSchedule.ErrorMessage = "Provider required"; } hfedSchedule = GetDropDownData(hfedSchedule); // Reload dropdown lists return(View(hfedSchedule)); // (for error functions) } hfedSchedule = CheckForDuplicateClient(hfedSchedule); if (!hfedSchedule.ErrorMessage.IsNullOrEmpty()) { return(View(hfedSchedule)); } if (hfedSchedule.HfedDriversArray.IsNullOrEmpty()) { hfedSchedule.HfedDriverIds = string.Empty; } else { hfedSchedule.HfedDriverIds = string.Join(",", hfedSchedule.HfedDriversArray); } if (hfedSchedule.HfedClientsArray.IsNullOrEmpty()) { hfedSchedule.HfedClientIds = String.Empty; } else { hfedSchedule.HfedClientIds = string.Join(",", hfedSchedule.HfedClientsArray); } if (hfedSchedule.Households == null) { hfedSchedule.Households = 0; } //EF not adding blank Foreign Key records: use raw SQL var query = @"INSERT INTO HfedSchedule " + "(Date,PickUpTime,ScheduleNote,Request,Complete," + "Households,Approved," + "Location_Id,PointPerson_Id,Provider_Id,HfedDriverIds,HfedClientIds)" + " VALUES " + "(@Date,@PickUpTime,@ScheduleNote,@Request,@Complete," + "@Households,@Approved," + "@Location_Id,@PointPerson_Id,@Provider_Id,@HfedDriverIds,@HfedClientIds)"; db.Database.ExecuteSqlCommand(query, new SqlParameter("@Date", hfedSchedule.Date.ToShortDateString()), new SqlParameter("@PickUpTime", hfedSchedule.PickUpTime + ""), new SqlParameter("@ScheduleNote", hfedSchedule.ScheduleNote + ""), new SqlParameter("@Request", hfedSchedule.Request ? 1 : 0), new SqlParameter("@Complete", hfedSchedule.Complete ? 1 : 0), new SqlParameter("@Households", hfedSchedule.Households), new SqlParameter("@Approved", hfedSchedule.Approved ? 1 : 0), new SqlParameter("@Location_Id", hfedSchedule.Location.Id), new SqlParameter("@PointPerson_Id", hfedSchedule.PointPerson.Id), new SqlParameter("@Provider_Id", hfedSchedule.Provider.Id), new SqlParameter("@HfedDriverIds", "'" + hfedSchedule.HfedDriversArray + "'"), new SqlParameter("@HfedClientIds", hfedSchedule.HfedClientIds)); return(RedirectToAction("Index")); }
public ActionResult Edit([Bind(Include = "Id,Date,PickUpTime,Provider,Location,PointPerson," + "ScheduleNote,Driver,Request,Complete,Households,Approved," + "HfedDriversArray,HfedClientsArray,VolunteerHours")] HfedScheduleViewModel hfedSchedule) { if (hfedSchedule.HfedClientsArray.IsNullOrEmpty()) { hfedSchedule.HfedClientIds = string.Empty; } else { hfedSchedule.HfedClientIds = string.Join(",", hfedSchedule.HfedClientsArray ?? throw new InvalidOperationException()); } hfedSchedule = CheckForDuplicateClient(hfedSchedule); if (!hfedSchedule.ErrorMessage.IsNullOrEmpty()) { hfedSchedule = GetDropDownData(hfedSchedule); return(View(hfedSchedule)); // (for error functions) } //EF not adding blank Foreign Key records: use raw SQL string cmdString = "UPDATE HfedSchedule SET "; cmdString += "Date='" + hfedSchedule.Date + "',"; cmdString += "PickUpTime='" + hfedSchedule.PickUpTime + "',"; if (hfedSchedule.ScheduleNote != null) { cmdString += "ScheduleNote='" + hfedSchedule.ScheduleNote.Replace("'", "''") + "',"; } else { cmdString += "ScheduleNote='',"; } cmdString += "Request='" + hfedSchedule.Request + "',"; cmdString += "Complete='" + hfedSchedule.Complete + "',"; if (hfedSchedule.Households == null) { hfedSchedule.Households = 0; } cmdString += "Households=" + hfedSchedule.Households + ","; if (hfedSchedule.Approved) { cmdString += "Approved=1,"; } else { cmdString += "Approved=0,"; } cmdString += "Location_Id=" + hfedSchedule.Location.Id + ","; cmdString += "PointPerson_Id='" + hfedSchedule.PointPerson.Id + "',"; cmdString += "Driver_Id='" + hfedSchedule.Driver.Id + "',"; cmdString += "Provider_Id=" + hfedSchedule.Provider.Id + ","; cmdString += "HfedDriverIds='" + hfedSchedule.HfedDriversArray + "',"; cmdString += "HfedClientIds='" + hfedSchedule.HfedClientIds + "',"; if (Math.Abs((hfedSchedule.VolunteerHours ?? 0)) < .01) { cmdString += "VolunteerHours=NULL"; } else { cmdString += "VolunteerHours=" + hfedSchedule.VolunteerHours; } cmdString += " WHERE Id=" + hfedSchedule.Id; db.Database.ExecuteSqlCommand(cmdString); var usrId = User.Identity.GetUserId(); var allUsers = db.Users.ToList(); foreach (ApplicationUser user in allUsers) { if (UserIsInRole(user, "ReceiveHfedScheduleChangeEmail")) { var recipientId = user.Id; // Email Lynn Rose that an update has occurred (01/15/2020) var unused = EmailHFEDScheduleChange(usrId, hfedSchedule.Id, hfedSchedule.Provider.Id, recipientId); } } return(RedirectToAction("Index")); }
public ActionResult Create([Bind(Include = "Id,Date,PickUpTime,Provider,Location,PointPerson," + "ScheduleNote,Driver,Request,Complete,Households,Approved," + "HfedDriversArray,HfedClientsArray,VolunteerHours")] HfedScheduleViewModel hfedSchedule) { if (hfedSchedule.PointPerson.Id == null || hfedSchedule.Location.Id == 0 || hfedSchedule.Provider.Id == 0) { hfedSchedule = GetDropDownData(hfedSchedule); // Reload dropdown lists if (hfedSchedule.PointPerson.Id == null) { hfedSchedule.ErrorMessage = "Point Person required"; } if (hfedSchedule.Location.Id == 0) { hfedSchedule.ErrorMessage = "Location required"; } if (hfedSchedule.Provider.Id == 0) { hfedSchedule.ErrorMessage = "Provider required"; } hfedSchedule = GetDropDownData(hfedSchedule); // Reload dropdown lists return(View(hfedSchedule)); // (for error functions) } hfedSchedule = CheckForDuplicateClient(hfedSchedule); if (!hfedSchedule.ErrorMessage.IsNullOrEmpty()) { return(View(hfedSchedule)); } if (hfedSchedule.HfedDriversArray.IsNullOrEmpty()) { hfedSchedule.HfedDriverIds = string.Empty; } else { hfedSchedule.HfedDriverIds = string.Join(",", hfedSchedule.HfedDriversArray); } if (hfedSchedule.HfedClientsArray.IsNullOrEmpty()) { hfedSchedule.HfedClientIds = String.Empty; } else { hfedSchedule.HfedClientIds = string.Join(",", hfedSchedule.HfedClientsArray); } //EF not adding blank Foreign Key records: use raw SQL using (var context = new SenecaContext()) { string cmdString = "INSERT INTO HfedSchedule ("; cmdString += "Date,PickUpTime,ScheduleNote,Request,Complete,"; cmdString += "Households,Approved,"; cmdString += "Location_Id,PointPerson_Id,Provider_Id,HfedDriverIds,HfedClientIds)"; cmdString += " VALUES ("; cmdString += "'" + hfedSchedule.Date + "','" + hfedSchedule.PickUpTime + "',"; if (hfedSchedule.ScheduleNote.IsNullOrEmpty()) { cmdString += "'',"; } else { cmdString += "'" + hfedSchedule.ScheduleNote.Replace("'", "''") + "',"; } cmdString += "0,0,"; // insert zeroes into Request & Complete if (hfedSchedule.Households == null) { cmdString += "0,"; } else { cmdString += hfedSchedule.Households + ","; } if (hfedSchedule.Approved) { cmdString += "1,"; } else { cmdString += "0,"; } cmdString += hfedSchedule.Location.Id + ","; cmdString += "'" + hfedSchedule.PointPerson.Id + "'," + hfedSchedule.Provider.Id + ","; cmdString += "'" + hfedSchedule.HfedDriverIds + "',"; cmdString += "'" + hfedSchedule.HfedClientIds + "')"; context.Database.ExecuteSqlCommand(cmdString); } return(RedirectToAction("Index")); }