/// <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> /// Renews the checkout of the material associated with the given materialid /// </summary> /// <param name="mId">Id of the material whose checkout should be renewed</param> public void Renew(long mId) { using (var db = new ILSDBEntities()) { Checkout currentOut = db.Checkouts.First(i => i.materialID == mId); DateTime currentReturn, newReturn; int length = GetLoanLength(mId); currentReturn = DateTime.ParseExact(currentOut.returnDate, "MM/dd/yyyy", null); newReturn = currentReturn.AddDays(length); currentOut.returnDate = newReturn.ToString("MM/dd/yyyy"); db.SaveChanges(); } }
/// <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(); } }
/// <summary> /// Returns an item by removing it from the checkout table and stripping the patron ID from the materials table /// </summary> /// <param name="mId">Material ID that uniquely identifies the material you want to return</param> public void Return(long mId) { List <Checkout> allCheckouts = GetFullCheckoutInfo(); long pId; if (allCheckouts.Any(i => i.materialID == mId) == true) { using (var db = new ILSDBEntities()) { // Remove entry from checkout table Checkout chk = db.Checkouts.First(c => c.materialID == mId); pId = chk.patronLibraryID; db.Checkouts.Attach(chk); db.Checkouts.Remove(chk); // Remove library ID from field Material mat = db.Materials.First(m => m.patronLibraryID == pId); mat.patronLibraryID = null; db.SaveChanges(); } } }