// GET: Account/PatronProfile public ActionResult PatronProfile() { string userId = User.Identity.GetUserId(); Patron patron = db.Patrons.Single(p => p.UserId == userId); if (patron == null) { return(HttpNotFound()); } var checkoutEvents = patron.CheckoutEvents.OrderBy(x => x.DateTimeCheckedOut); var checkoutIds = checkoutEvents.Select(x => x.BookId); var checkoutTitles = checkoutIds.Select(x => db.Books.Find(x).Title).ToArray(); var currentTitles = patron.Books.Select(x => x.Title).ToArray(); var currentIds = patron.Books.Select(x => x.BookId).ToArray(); PatronViewModel patronVM = new PatronViewModel { PatronId = patron.PatronId, Address = patron.Address, CheckoutTitles = checkoutTitles, CheckoutDates = patron.CheckoutEvents.Select(x => x.DateTimeCheckedOut).ToArray(), PatronName = patron.PatronName, PhoneNumber = patron.PhoneNumber, PreferenceBranchId = patron.PreferenceBranchId, PreferenceBranchName = db.Branches.Find(patron.PreferenceBranchId).LibraryName, BooksCurrentlyRentedIds = patron.Books.Select(x => x.BookId).ToArray(), BooksCurrentlyRentedTitles = patron.Books.Select(x => x.Title).ToArray() }; ViewBag.PreferenceBranchId = new SelectList(db.Branches, "BranchId", "LibraryName", patronVM.PreferenceBranchId); return(View(patronVM)); }
public HttpResponseMessage CheckIn(PatronViewModel checkIn) { ApiResponse response = new ApiResponse(Request); if (checkIn == null) { response.errors.Add(new NullRequest()); return response.GenerateResponse(HttpStatusCode.BadRequest); } try { using (var database = new Database()) { var volunteerName = Request.Headers.GetHeaderValue("username"); var volunteer = database.Volunteers.FirstOrDefault(v => v.Username == volunteerName); var serviceType = database.ServiceTypes.FirstOrDefault(st => st.ID == checkIn.ServiceSelection); Patron patron; if (checkIn.ID > -1) { patron = database.Patrons .Include(p => p.Gender) .Include(p => p.Addresses) .Include(p => p.EmergencyContacts) .Include(p => p.Ethnicity) .Include(p => p.MaritalStatus) .Include(p => p.PhoneNumbers) .Include(p => p.ResidenceStatus) .First(p => p.ID == checkIn.ID); patron.Addresses = checkIn.Addresses; patron.EmergencyContacts = checkIn.EmergencyContacts; patron.PhoneNumbers = checkIn.PhoneNumbers; } else { patron = JsonConvert.DeserializeObject<Patron>(JsonConvert.SerializeObject(checkIn)); //You can move values up an inheritance chain! } patron.Ethnicity = database.Ethnicities.FirstOrDefault(et => et.ID == (int)checkIn.ethnicityID); patron.Gender = database.Genders.FirstOrDefault(gt => gt.ID == (int)checkIn.genderID); patron.ResidenceStatus = database.ResidenceStatuses.FirstOrDefault(rt => rt.ID == (int)checkIn.residenceStatusID); patron.MaritalStatus = database.MaritalStatuses.FirstOrDefault(mt => mt.ID == (int)checkIn.maritalStatusID); database.Patrons.AddOrUpdate(patron); database.SaveChanges(); Visit visit = new Visit { CreateVolunteer = volunteer, Service = serviceType, Patron = patron }; database.Visits.Add(visit); database.SaveChanges(); return response.GenerateResponse(HttpStatusCode.Created); } } catch(Exception e) { response.errors.Add(new InvalidCheckIn { source = e }); return response.GenerateResponse(HttpStatusCode.BadRequest); } }
public IActionResult Create(PatronViewModel newPatron) { if (ModelState.IsValid) { var patron = new Patron(Guid.NewGuid(), newPatron.FirstName, newPatron.LastName); _library.AddPatron(patron); return(RedirectToAction("Index")); } else { return(View(newPatron)); } }
// GET: Patrons/Details/5 public async Task <IActionResult> Details(int id) { var patron = await context.Patrons.FirstByIdAsync(id); if (patron == null) { return(BadRequest()); } var patronView = new PatronViewModel(patron) { Holdings = patronsService.HoldingsForPatron(id) }; return(View(patronView)); }
public ActionResult PatronProfile([Bind(Include = "PatronId,PreferenceBranchId,PatronName,Address,PhoneNumber")] PatronViewModel patronVm) { if (ModelState.IsValid) { var patron = db.Patrons.Find(patronVm.PatronId); patron.PatronName = patronVm.PatronName; patron.PhoneNumber = patronVm.PhoneNumber; patron.PreferenceBranchId = patronVm.PreferenceBranchId; patron.Address = patronVm.Address; db.Entry(patron).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index", "Branches")); } ViewBag.PreferenceBranchId = new SelectList(db.Branches, "BranchId", "LibraryName", patronVm.PreferenceBranchId); return(View(patronVm)); }
// GET: Patrons/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var patron = patronRepo.GetByID(id.Value); if (patron == null) { return(HttpNotFound()); } var patronView = new PatronViewModel(patron); patronView.Holdings = new List <Holding> (holdingRepo.FindBy(holding => holding.HeldByPatronId == id)); return(View(patronView)); }