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;
 }
        private UserPageViewModel GenerateUserPageViewModel(Account a)
        {
            UserPageViewModel upvm = new UserPageViewModel();
            upvm.about_me = a.about_me;
            upvm.birthday = a.birthdate;
            upvm.first_name = a.first_name;
            upvm.Gender = a.Gender.value;
            upvm.id = a.id;
            upvm.last_name = a.last_name;
            upvm.Salutation = a.Salutation.value;
            upvm.username = a.username;
            decimal donation_total = a.donation_total;
            int post_count = a.Posts.Count();
            var valid_transactions = a.Transactions.Where(x => x.transaction_status_id == 2);
            decimal purchase_total = 0;
            foreach(Transaction t in valid_transactions)
            {
                foreach(TransactionItem ti in t.TransactionItems)
                {
                    purchase_total += ti.item_price * ti.quantity;
                }
            }
            if(donation_total >= 100)
            {
                upvm.donation_badge_level = 3;
            }
            else if(donation_total >= 20)
            {
                upvm.donation_badge_level = 2;
            }
            else if(donation_total >= 5)
            {
                upvm.donation_badge_level = 1;
            }
            else
            {
                upvm.donation_badge_level = 0;
            }

            if(post_count >= 10)
            {
                upvm.post_badge_level = 3;
            }
            else if (post_count >= 5)
            {
                upvm.post_badge_level = 2;
            }
            else if(post_count >= 3)
            {
                upvm.post_badge_level = 1;
            }
            else
            {
                upvm.post_badge_level = 0;
            }

            if(purchase_total >= 100)
            {
                upvm.purchase_badge_level = 3;
            }
            else if(purchase_total >= 20)
            {
                upvm.purchase_badge_level = 2;
            }
            else if(purchase_total >= 5)
            {
                upvm.purchase_badge_level = 1;
            }
            else
            {
                upvm.purchase_badge_level = 0;
            }

            return upvm;
        }
 private void AddAccount(RegisterViewModel rvm)
 {
     Account a = new Account();
     a.first_name = rvm.first_name;
     a.last_name = rvm.last_name;
     a.username = rvm.username;
     a.password = Encoding.UTF8.GetBytes(BCrypt.Net.BCrypt.HashPassword(rvm.password, BCrypt.Net.BCrypt.GenerateSalt(10)));
     a.salutation_id = rvm.salutation_id;
     a.gender_id = rvm.gender_id;
     if (Session["User"] == null || Session["Elevation"] == null || !Session["Elevation"].Equals("Administrator") || a.access_level_id == 0)
     {
         a.access_level_id = 1;
     }
     else
     {
         a.access_level_id = rvm.access_level_id;
     }
     if (rvm.about_me == null)
     {
         a.about_me = "";
     }
     else
     {
         a.about_me = rvm.about_me;
     }
     String datestring = rvm.birth_month + "/" + rvm.birth_day + "/" + rvm.birth_year;
     DateTime dt = DateTime.ParseExact(datestring, "M/d/yyyy", CultureInfo.InvariantCulture);
     a.birthdate = dt;
     a.date_joined = DateTime.Now;
     db.Accounts.Add(a);
     db.SaveChanges();
 }