private EditAccountViewModel GenerateEditAccountViewModel(Account a)
 {
     EditAccountViewModel eavm = new EditAccountViewModel();
     eavm.about_me = a.about_me;
     eavm.access_level_id = a.access_level_id;
     eavm.birth_day = a.birthdate.Day;
     eavm.birth_month = a.birthdate.Month;
     eavm.birth_year = a.birthdate.Year;
     eavm.first_name = a.first_name;
     eavm.gender_id = a.gender_id;
     eavm.id = a.id;
     eavm.last_name = a.last_name;
     eavm.salutation_id = a.salutation_id;
     List<SelectListItem> Salutations = new List<SelectListItem>();
     Gender g = db.Genders.Find(eavm.gender_id);
     if (g != null)
     {
         foreach (Salutation s_2 in g.Salutations)
         {
             SelectListItem sli = new SelectListItem();
             sli.Text = s_2.value.ToString();
             sli.Value = s_2.id.ToString();
             Salutations.Add(sli);
         }
         eavm.Salutations = new SelectList(Salutations, "Value", "Text");
     }
     else
     {
         eavm.Salutations = new SelectList(Salutations, "Value", "Text");
     }
     eavm.days = GenerateDayList(eavm.birth_month, eavm.birth_year);
     eavm.months = GenerateMonthList();
     eavm.years = GenerateYearList();
     eavm.access_levels = new SelectList(db.AccessLevels, "id", "value");
     return eavm;
 }
 public ActionResult EditPage(EditAccountViewModel eavm)
 {
     if (Session["User"] == null)
     {
         return RedirectToAction("LoginPage", "Application");
     }
     else if (eavm.id != Convert.ToInt32(Session["User"]))
     {
         return RedirectToAction("LoggedInProfile");
     }
     else
     {
         Salutation s = db.Salutations.Find(eavm.salutation_id);
         if (s != null)
         {
             if (s.gender_id != eavm.gender_id)
             {
                 this.ModelState.AddModelError("salutation_id", "Salutation Error.");
             }
         }
         else
         {
             this.ModelState.AddModelError("salutation_id", "Salutation Error.");
         }
         if (db.Genders.Find(eavm.gender_id) == null)
         {
             this.ModelState.AddModelError("gender_id", "Gender Error.");
         }
         Account a = db.Accounts.Find(Session["User"]);
         if (a == null)
         {
             this.ModelState.AddModelError("id", "General Error.");
         }
         else if (a.access_level_id != eavm.access_level_id && Session["Elevation"].Equals("Administrator"))
         {
             this.ModelState.AddModelError("access_level_id", "Access Error.");
         }
         if (this.ModelState.IsValid)
         {
             EditAccount(eavm);
             return RedirectToAction("LoggedInProfile", "Application");
         }
         else
         {
             List<SelectListItem> Salutations = new List<SelectListItem>();
             Gender g = db.Genders.Find(eavm.gender_id);
             if (g != null)
             {
                 foreach (Salutation s_2 in g.Salutations)
                 {
                     SelectListItem sli = new SelectListItem();
                     sli.Text = s_2.value.ToString();
                     sli.Value = s_2.id.ToString();
                     Salutations.Add(sli);
                 }
                 eavm.Salutations = new SelectList(Salutations, "Value", "Text");
             }
             else
             {
                 eavm.Salutations = new SelectList(Salutations, "Value", "Text");
             }
             eavm.days = GenerateDayList(eavm.birth_month, eavm.birth_year);
             eavm.months = GenerateMonthList();
             eavm.years = GenerateYearList();
             eavm.access_levels = new SelectList(db.AccessLevels, "id", "value");
             this.ModelState.AddModelError("GeneralError", "Error: There are some invalid fields. Please check your input before trying again.");
             return View("EditPage", eavm);
         }
     }
 }
 private void EditAccount(EditAccountViewModel eavm)
 {
     Account a = db.Accounts.Find(Session["User"]);
     a.first_name = eavm.first_name;
     a.last_name = eavm.last_name;
     a.salutation_id = eavm.salutation_id;
     a.gender_id = eavm.gender_id;
     if (Session["User"] != null && Session["Elevation"] != null && Session["Elevation"].Equals("Administrator"))
     {
         a.access_level_id = eavm.access_level_id;
     }
     a.about_me = eavm.about_me;
     String datestring = eavm.birth_month + "/" + eavm.birth_day + "/" + eavm.birth_year;
     DateTime dt = DateTime.ParseExact(datestring, "M/d/yyyy", CultureInfo.InvariantCulture);
     a.birthdate = dt;
     db.SaveChanges();
 }