Esempio n. 1
0
        // 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));
     }
 }
Esempio n. 4
0
        // 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));
        }
Esempio n. 5
0
 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));
 }
Esempio n. 6
0
        // 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));
        }