public void TestGetDueDate()
        {
            Member studentMember = new Member()
            {
                MemberType = MEMBERTYPE.STUDENT
            };
            Member facultyMember = new Member()
            {
                MemberType = MEMBERTYPE.FACULTY
            };
            IssuedItem studentItem = new IssuedItem()
            {
                AccessionRecord = accessionRecords[0], IssuedItemId = 21, Member = studentMember
            };
            IssuedItem facultyItem = new IssuedItem()
            {
                AccessionRecord = accessionRecords[0], IssuedItemId = 22, Member = facultyMember
            };

            dynamic  service           = new IssuedItemService(accRecMock.Object);
            DateTime returnDateStudent = service.GetDueDate(studentItem);
            DateTime returnDateFaculty = service.GetDueDate(facultyItem);

            // Student due date should be 7 days from today.
            Assert.IsTrue(returnDateStudent.Subtract(studentItem.IssueDate).Days == 7);

            // Faculty due date should be 90 days from now
            Assert.IsTrue(returnDateFaculty.Subtract(facultyItem.IssueDate).Days == 90);
        }
        public void TestGetLateFee()
        {
            int    lateFee       = 5;
            Member studentMember = new Member()
            {
                MemberType = MEMBERTYPE.STUDENT
            };

            DateTime   tenDaysAgo = DateTime.Now.Subtract(TimeSpan.FromDays(10));
            IssuedItem someItem   = new IssuedItem()
            {
                AccessionRecord = accessionRecords[0],
                IssuedItemId    = 21,
                Member          = studentMember,
                LateFeePerDay   = lateFee,
                IssueDate       = tenDaysAgo
                                  // Setting the issueDate to 10 days ago makes the number of late days to be
                                  // 3 for a student member.
            };


            dynamic service = new IssuedItemService(accRecMock.Object);

            // Number of days from due date that have passed i.e. how may days ago
            // was the due date
            int lateDays = DateTime.Now.Subtract(service.GetDueDate(someItem)).Days;

            Assert.AreEqual(lateFee * lateDays, service.GetLateFee(someItem));
        }
        public ActionResult SetLateFeePaid(int id)
        {
            IssuedItem issuedItem = service.GetById(id);

            issuedItem.IsLateFeePaid = true;
            return(RedirectToAction("Details", new { id = issuedItem.IssuedItemId }));
        }
예제 #4
0
        public ActionResult DeleteConfirmed(int id)
        {
            IssuedItem issuedItem = db.IssuedItems.Find(id);

            db.IssuedItems.Remove(issuedItem);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        // GET: IssuedItems/Create
        public ActionResult Create(int itemid)
        {
            IssuedItem newRecord = new IssuedItem();

            newRecord.AccessionRecord = service.GetRandomIssuableAccRecord(itemid);
            newRecord.IssueDate       = DateTime.Now.Date;
            newRecord.IsReturned      = false;
            return(View(newRecord));
        }
        public ActionResult SetDateReturned(int id)
        {
            IssuedItem issuedItem = service.GetById(id);

            issuedItem.DateReturned = service.GetDueDate(issuedItem);
            service.Update(issuedItem);

            return(RedirectToAction("Details", new { id = issuedItem.IssuedItemId }));
        }
예제 #7
0
 public ActionResult Edit([Bind(Include = "IssuedItemId,IssueDate,LateFeePerDay")] IssuedItem issuedItem)
 {
     if (ModelState.IsValid)
     {
         db.Entry(issuedItem).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(issuedItem));
 }
예제 #8
0
        public ActionResult Create([Bind(Include = "IssuedItemId,IssueDate,LateFeePerDay")] IssuedItem issuedItem)
        {
            if (ModelState.IsValid)
            {
                db.IssuedItems.Add(issuedItem);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(issuedItem));
        }
예제 #9
0
        public void TestIssuedItemDefaults()
        {
            DateTime currentDate = DateTime.Now.Date;

            IssuedItem issuedItem = new IssuedItem();

            Assert.AreEqual(currentDate.ToString("dd/MM/yyyy"), issuedItem.IssueDate.ToString("dd/MM/yyyy"));

            Assert.IsFalse(issuedItem.IsReturned);
            Assert.IsNull(issuedItem.IsLateFeePaid);
        }
        public int GetLateFee(IssuedItem issuedItem)
        {
            DateTime currentDate = DateTime.Now.Date;

            DateTime dueDate = GetDueDate(issuedItem);

            int i = currentDate.Subtract(dueDate).Days;

            Debug.WriteLine(GetDueDate(issuedItem).ToString("dd/MM/yyyy"));

            return(i * issuedItem.LateFeePerDay);
        }
예제 #11
0
        // GET: IssuedItems/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            IssuedItem issuedItem = db.IssuedItems.Find(id);

            if (issuedItem == null)
            {
                return(HttpNotFound());
            }
            return(View(issuedItem));
        }
        public DateTime GetDueDate(IssuedItem issuedItem)
        {
            DateTime retval = DateTime.Now;

            if (issuedItem.Member.MemberType == MEMBERTYPE.FACULTY)
            {
                retval = issuedItem.IssueDate.AddDays(90).Date;
            }
            else if (issuedItem.Member.MemberType == MEMBERTYPE.STUDENT)
            {
                retval = issuedItem.IssueDate.AddDays(7).Date;
            }
            return(retval);
        }
예제 #13
0
        public void TestCreateWorks()
        {
            // Set up a fake GetRandomIssuableAccRecord() and make sure it's called.
            // smock.Setup(m => m.GetRandomIssuableAccRecord()).Returns(accessionRecords[0]);
            var        controller = new IssuedItemsController(mock.Object);
            IssuedItem toAdd      = new IssuedItem {
                AccessionRecord = accessionRecords[0], Member = member, IssuedItemId = 15, IssueDate = DateTime.Now.Date
            };

            controller.Create(toAdd);
            // Make sure that the Create method calls a GetAllIssueableAccRecords()
            mock.Verify(m => m.GetRandomIssuableAccRecord(It.IsAny <int>()), Times.Once);
            // Test that it calls the service.Add() method, which it doesn't by default
            mock.Verify(m => m.Add(It.IsAny <IssuedItem>()), Times.Once);
        }
예제 #14
0
        public void TestGetLateFee()
        {
            int lateFee = 5;

            IssuedItem someItem = new IssuedItem()
            {
                AccessionRecord = accessionRecords[0], IssuedItemId = 21, Member = member, LateFeePerDay = lateFee
            };

            dynamic  service           = new IssuedItemService(accRecMock.Object);
            DateTime returnDateStudent = service.GetDueDate(someItem).ToString("dd/MM/yyyy");

            DateTime tenDaysLate = returnDateStudent.Add(TimeSpan.FromDays(10));

            Assert.IsTrue(service.GetLateFee(someItem) == lateFee * 10);
        }
        public ActionResult Create([Bind(Include = "IssuedItemId,IssueDate,LateFeePerDay,Member,AccessionRecord")] IssuedItem issuedItem)
        {
            if (ModelState.IsValid)
            {
                if (memberService.GetMemberById(issuedItem.Member.MemberId) == null)
                {
                    ModelState.AddModelError("Member", "The Member ID does not exist.");
                }
                else
                {
                    service.Add(issuedItem);
                    return(RedirectToAction("Index"));
                }
            }

            return(View(issuedItem));
        }
예제 #16
0
        public void TestIssuedItemModelValidation()
        {
            Item item = new Item {
                Title = "Item To issue", ItemId = 1
            };
            IssuedItem issuedItem = new IssuedItem()
            {
                LateFeePerDay = 0
            };

            var results = GetValidationErrorList(issuedItem);

            // The results.Any part returns true of any object in the results
            // list has a MemberNames property which contains the word "Member"
            // and the others
            Assert.IsTrue(results.Any(v => v.MemberNames.Contains("Member")));
            Assert.IsTrue(results.Any(v => v.MemberNames.Contains("AccessionRecord")));
            Assert.IsTrue(results.Any(v => v.MemberNames.Contains("IssueDate")));
        }
예제 #17
0
        public void TestCreateChecksMemberId()
        {
            var memberServiceMock = new Mock <IMemberService>();

            dynamic controller = new IssuedItemsController(mock.Object, memberServiceMock.Object);

            IssuedItem itemToValidate = new IssuedItem()
            {
                AccessionRecord = accessionRecords[0],
                IssueDate       = DateTime.Now.Date,
                Member          = new Member()
                {
                    MemberId = -1
                }
            };

            var result = controller.Create(itemToValidate) as ViewResult;

            // Make sure create calls GetMemberById
            memberServiceMock.Verify(m => m.GetMemberById(It.IsAny <int?>()), Times.Once);
            // Make sure that errors for the Member field exist
            Assert.IsNotNull(result.ViewData.ModelState["Member"].Errors);
        }