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));
        }
Esempio n. 4
0
        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"));
        }
Esempio n. 10
0
        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"));
        }
Esempio n. 11
0
        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"));
        }