/// <summary>
        /// Performs a checkout by updating the checkout table with the patron ID, Material ID, return date, and checkout date
        /// Also adds the patron ID to the material's entry on the material table as a foreign key
        /// </summary>
        /// <param name="mId">Material ID to uniquely identify the material</param>
        /// <param name="pId">Patron ID to uniquely identify the patron</param>
        public void checkoutMaterial(long mId, long pId)
        {
            using (var db = new ILSDBEntities())
            {
                DateTime currentDate, returnDate;
                string   currentMaterialType;
                // Queries must be converted to lists, even if the query will only return one value
                // Load the currently selected material into a variable
                List <Material> currentMaterial = db.Materials.Where(i => i.Id == mId).ToList();
                currentMaterialType = currentMaterial[0].materialType;
                // Look up and load the entry for this material type's loan length
                List <LoanLength> loanLengthEntry = db.LoanLengths.Where(l => l.MaterialType == currentMaterialType).ToList();

                List <Checkout> allCheckouts = new List <Checkout>();
                currentDate = DateTime.Now;
                // Since ID is the primary key, there will only ever be one entry in the list
                returnDate = currentDate.AddDays(loanLengthEntry[0].LoanLength1);

                Checkout currentCheckout = new Checkout
                {
                    materialID      = mId,
                    patronLibraryID = pId,
                    returnDate      = returnDate.ToString("MM/dd/yyyy"),
                    checkoutDate    = currentDate.ToString("MM/dd/yyyy")
                };
                // Add the checkout to the checkout table
                db.Checkouts.Add(currentCheckout);
                // Associate the patron checking out ID with the material record
                currentMaterial[0].patronLibraryID = pId;
                // Save changes
                db.SaveChanges();
                db.Dispose();
            }
        }
 /// <summary>
 /// Removes material with given id from material db
 /// </summary>
 /// <param name="mId"></param>
 public void removeMat(long mId)
 {
     using (var db = new ILSDBEntities())
     {
         Material r = db.Materials.First(i => i.Id == mId);
         db.Materials.Attach(r);
         db.Materials.Remove(r);
         db.SaveChanges();
         db.Dispose();
     }
 }
 /// <summary>
 /// Removes selected patron
 /// </summary>
 /// <param name="pId">Selected patron id</param>
 public void removePatron(long pId)
 {
     using (var db = new ILSDBEntities())
     {
         Patron r = db.Patrons.First(i => i.Id == pId);
         db.Patrons.Attach(r);
         db.Patrons.Remove(r);
         db.SaveChanges();
         db.Dispose();
     }
 }
 /// <summary>
 /// updates material with given id in material db
 /// </summary>
 /// <param name="mId">Material Id that is to be updated</param>
 /// <param name="mname">Material Name to updated to</param>
 /// <param name="mtype">Material type to update to</param>
 public void updateMaterial(long mId, string mname, string mtype)
 {
     using (var db = new ILSDBEntities())
     {
         Material m = db.Materials.First(i => i.Id == mId);
         m.materialName       = mname;
         m.materialType       = mtype;
         m.materialLoanLength = getMatLoanLength(mtype);
         db.SaveChanges();
         db.Dispose();
     }
 }
 /// <summary>
 /// Updates Patron information
 /// </summary>
 /// <param name="pId">Given patron id</param>
 /// <param name="fname">Updated patron first name</param>
 /// <param name="lname">Updated patron last name</param>
 /// <param name="email">Updated patron email</param>
 /// <param name="phone">Updated patron phone number</param>
 public void updatePatron(long pId, string fname, string lname, string email, string phone)
 {
     using (var db = new ILSDBEntities())
     {
         Patron u = db.Patrons.First(i => i.Id == pId);
         u.patronFirstName = fname;
         u.patronLastName  = lname;
         u.patronEmail     = email;
         u.patronPhone     = phone;
         db.SaveChanges();
         db.Dispose();
     }
 }
 /// <summary>
 /// Adds a material to the material tb
 /// </summary>
 /// <param name="mtype">The type of material to be added</param>
 /// <param name="mname">The name of the material to be added</param>
 public void addMat(string mtype, string mname)
 {
     using (var db = new ILSDBEntities())
     {
         Material newMat = new Material
         {
             materialType       = mtype,
             materialName       = mname,
             materialLoanLength = getMatLoanLength(mtype), //gets the loan length associated to the given material type
             Id = generateMatId()                          //generates unique material id
         };
         db.Materials.Add(newMat);
         db.SaveChanges();
         db.Dispose();
     }
 }
 /// <summary>
 /// Add a patron
 /// </summary>
 /// <param name="fname">Patron First Name</param>
 /// <param name="lname">Patron Last Name</param>
 /// <param name="email">Patron Email</param>
 /// <param name="phone">Patron Phone Number</param>
 public void addPatron(string fname, string lname, string email, string phone)
 {
     using (var db = new ILSDBEntities())
     {
         Patron newPatron = new Patron
         {
             patronFirstName = fname,
             patronLastName  = lname,
             patronEmail     = email,
             patronPhone     = phone,
             Id = generatePatronId()
         };
         db.Patrons.Add(newPatron);
         db.SaveChanges();
         db.Dispose();
     }
 }