public ActionResult CreatePortfolio(string json) { var model = new AuthModel(); if (!IsAuthorized(model)) { return(new HttpStatusCodeResult(401)); } var data = JsonConvert.DeserializeObject <CreatePortfolio>(json); using (var db = new SqlLinkDataContext()) { var portfolio = new Fio() { Name = data.Name, UserId = model.UserId }; db.Fios.InsertOnSubmit(portfolio); db.SubmitChanges(); var payers = data.Roommates.Select(r => new Payer() { Name = r.Name, Fio = portfolio, VenmoId = r.VenmoId }); db.Payers.InsertAllOnSubmit(payers); db.SubmitChanges(); var inc = new IdNameCombo() { Id = portfolio.Id, Payers = payers.OrderBy(p => p.Id).Select(p => p.Name).ToArray() }; return(Json(inc)); } return(new HttpStatusCodeResult(200)); }
/// <summary> /// Create a user account /// </summary> /// <param name="username">Desired username <see cref="User.Username"/> </param> /// <param name="venmoId">Venmo Identifier for the user to receive payments <see cref="User.VenmoId"/> </param> /// <param name="password">Password <see cref="User.Password"/> </param> /// <returns>Redirects to dashboard if user created, goes back to signup if error</returns> //[HttpPost] public ActionResult CreateAccount(string username, string venmoId, string password, string name) { using (var db = new SqlLinkDataContext()) { if (db.Users.Any(u => u.Username.ToLower() == username.ToLower())) { return(RedirectToAction("Index", new { Error = "Username taken" })); } var user = new User() { Username = username, Password = password, VenmoId = venmoId, RealName = name }; db.Users.InsertOnSubmit(user); db.SubmitChanges(); return(RedirectToAction("Login", new { username = user.Username, password = user.Password })); } }
public ActionResult AddBills(string json, int id) { var model = new AuthModel(); if (!IsAuthorized(model)) { return(new HttpStatusCodeResult(401)); } json = json.Replace("null", "0"); var data = JsonConvert.DeserializeObject <Bills>(json); using (var db = new SqlLinkDataContext()) { var por = db.Fios.Single(x => x.Id == id); var rentBill = new Bill() { Name = "Rent", RAmount = (decimal)data.RentTotal }; var oneTime = new Bill() { Name = "OneTime", SAmount = (decimal)data.OneTime.Sum() }; var utilities = new Bill() { Name = "Utilities", RAmount = (decimal)data.Utilities.Sum() }; por.Bills.Add(rentBill); por.Bills.Add(oneTime); por.Bills.Add(utilities); db.SubmitChanges(); var pays = por.Payers.OrderBy(p => p.Id); int i = 0; foreach (var p in pays) { try { p.PaymentDetails.Add(new PaymentDetail() { Payer = p, Bill = rentBill, RPercent = data.Rent[i] / 100 }); } catch { } try { if (oneTime.SAmount == 0) { oneTime.SAmount = 0.01M; } p.PaymentDetails.Add(new PaymentDetail() { Payer = p, Bill = oneTime, SPercent = data.OneTime[i] / (double)oneTime.SAmount }); } catch { } try { if (utilities.RAmount == 0) { utilities.RAmount = 0.01M; } p.PaymentDetails.Add(new PaymentDetail() { Payer = p, Bill = utilities, RPercent = data.Utilities[i] / (double)utilities.RAmount }); } catch { } i++; } try { db.SubmitChanges(); }catch (Exception e) { } return(new HttpStatusCodeResult(200)); } }