Ejemplo n.º 1
0
        public ActionResult LoanReports(DateTime startDate, DateTime endDate)
        {
            //  var startDate = DateTime.UtcNow.AddYears(-1);
            //  var endDate = DateTime.UtcNow;

            LoanReportViewModel model = _reportingServices.CreateLoanReportViewModel(startDate, endDate);

            return(View(model));
        }
Ejemplo n.º 2
0
        public string CreateLoanReportCSV(LoanReportViewModel loansReportData)
        {
            var htmlContent = new StringBuilder();

            #region Number of Device Loans By Type of borrower
            htmlContent.AppendLine(
                "Number of Device Loans by Type of Borrower"
                );

            htmlContent.AppendLine();

            htmlContent.AppendLine(
                "Type of Individual or Entity" + ", " +
                "Number of Borrowers"
                );


            htmlContent.AppendLine(
                "Individuals with disabilities" + ", " +
                loansReportData.NumberOfDeviceBorrowerWithDisability);

            htmlContent.AppendLine(
                "Family Members + guardians and authorized representatives" + ", " +
                loansReportData.NumberOfBorrowerFamily);

            htmlContent.AppendLine(
                "Representatives of Education" + ", " +
                loansReportData.NumberOfBorrowerEducation);

            htmlContent.AppendLine(
                "Representatives of Employment" + ", " +
                loansReportData.NumberOfBorrowerEmployment);
            htmlContent.AppendLine(
                "Representatives of Health + Allied Health + Rehabilitation" + ", " +
                loansReportData.NumberOfBorrowerHealth);
            htmlContent.AppendLine(
                "Representatives of Community Living" + ", " +
                loansReportData.NumberOfBorrowerCommunityLiving);
            htmlContent.AppendLine(
                "Representatives of Technology" + ", " +
                loansReportData.NumberOfBorrowerTechnology);
            htmlContent.AppendLine(
                "Total" + ", " +
                loansReportData.NumberOfTotalBorrowers);
            #endregion


            #region Types of Devices Loaned
            htmlContent.AppendLine();
            htmlContent.AppendLine(
                "Types of Devices Loaned"
                );

            htmlContent.AppendLine();

            htmlContent.AppendLine(
                "Type of AT Device" + ", " +
                "Number"
                );

            htmlContent.AppendLine(
                "Computers and Related Tech" + ", " +
                loansReportData.categoryCounts[0].Count);
            htmlContent.AppendLine(
                "Daily Living" + ", " +
                loansReportData.categoryCounts[1].Count);
            htmlContent.AppendLine(
                "Environmental Adaptations" + ", " +
                loansReportData.categoryCounts[2].Count);
            htmlContent.AppendLine(
                "Hearing" + ", " +
                loansReportData.categoryCounts[3].Count);
            htmlContent.AppendLine(
                "Learning + Cognition and Development" + ", " +
                loansReportData.categoryCounts[4].Count);
            htmlContent.AppendLine(
                "Mobility + Seating and Position" + ", " +
                loansReportData.categoryCounts[5].Count);
            htmlContent.AppendLine(
                "Recreational + Sports and Leisure" + ", " +
                loansReportData.categoryCounts[6].Count);
            htmlContent.AppendLine(
                "Speech Communication" + ", " +
                loansReportData.categoryCounts[7].Count);
            htmlContent.AppendLine(
                "Vehicle Mods and Transport" + ", " +
                loansReportData.categoryCounts[8].Count);
            htmlContent.AppendLine(
                "Vision" + ", " +
                loansReportData.categoryCounts[9].Count);
            htmlContent.AppendLine(
                "Total" + ", " +
                loansReportData.categoryCounts.Sum(c => c.Count));
            #endregion


            #region Device Loan by Types of Purpose
            htmlContent.AppendLine();
            htmlContent.AppendLine(
                "Devices Loans By Type of Purpose"
                );

            htmlContent.AppendLine();

            htmlContent.AppendLine(
                "Primary Purpose of Device Loan" + ", " +
                "Number of Loans"
                );

            htmlContent.AppendLine(
                "Assist in decision making (device trial or evaluation)" + ", " +
                loansReportData.PurposeDecisionMaking);
            htmlContent.AppendLine(
                "Serve as loaner during device repair while waiting for funding" + ", " +
                loansReportData.PurposeServeAsLoaner);
            htmlContent.AppendLine(
                "Provide and accomodate on a short-term basis for a time-limited event/situation" + ", " +
                loansReportData.PurposeShortTerm);
            htmlContent.AppendLine(
                "Conduct training + self-education or other professional development activity" + ", " +
                loansReportData.PurposeConductTraining);
            htmlContent.AppendLine(
                "Total" + ", " +
                loansReportData.PurposesTotal);

            #endregion

            return(htmlContent.ToString());
        }
        public LoanReportViewModel CreateLoanReportViewModel(DateTime startDate, DateTime endDate)
        {
            using (var context = new SingularityDBContext())
            {
                // We created a view model object that we will populate with information
                var viewModel = new LoanReportViewModel();

                viewModel.StartDate = startDate;
                viewModel.EndDate   = endDate;

                // Created variable that holds the total amount of loans between two dates
                var timeFramedLoans = context.LoanMasters
                                      .Where(loan => loan.DateCreated >= startDate &&
                                             loan.DateCreated <= endDate);


                var numberOfLoans = timeFramedLoans.Count();



                var query = from loans in timeFramedLoans
                            join clients in context.Clients
                            on loans.ClientId
                            equals clients.ClientID select clients;

                var inventoryQuery = from loans in timeFramedLoans
                                     join inventoryItems in context.InventoryItems
                                     on loans.ClientId
                                     equals inventoryItems.InventoryCategoryId
                                     select inventoryItems;


                var loanDetailQuery = from loans in timeFramedLoans
                                      join loanDetails in context.LoanDetails
                                      on loans.LoanMasterId
                                      equals loanDetails.LoanMasterId
                                      select loanDetails;



                // Created variables that hold the total amount of loans per type of borrower

                var borrowerWithDisability  = query.Where(borrower => borrower.ClientCategoryId == 1).Count();
                var borrowerFamily          = query.Where(borrower => borrower.ClientCategoryId == 2).Count();
                var borrowerEducation       = query.Where(borrower => borrower.ClientCategoryId == 3).Count();
                var borrowerEmployment      = query.Where(borrower => borrower.ClientCategoryId == 4).Count();
                var borrowerHealth          = query.Where(borrower => borrower.ClientCategoryId == 5).Count();
                var borrowerCommunityLiving = query.Where(borrower => borrower.ClientCategoryId == 6).Count();
                var borrowerTechnology      = query.Where(borrower => borrower.ClientCategoryId == 7).Count();

                // Found total amount of loans for all borrowers
                var totalBorrowers = borrowerWithDisability + borrowerFamily + borrowerEducation +
                                     borrowerEmployment + borrowerHealth + borrowerCommunityLiving + borrowerTechnology;

                // Counts the number of times a category appears
                var categoryCounts = context.getInventoryItemCategoryCount(startDate, endDate);

                // Counts the number of times purpose types appear
                var purposeAssistDecisionMaking = loanDetailQuery.Where(purpose => purpose.Purpose.Equals("Assist in decision making (device trial or evaluation)")).Count();
                var purposeServeAsLoaner        = loanDetailQuery.Where(purpose => purpose.Purpose.Equals("Serve as loaner during device repair or while waiting for funding")).Count();
                var purposeShortTerm            = loanDetailQuery.Where(purpose => purpose.Purpose.Equals("Provide and accomodation on a short-term basis for a time-limited event/situation")).Count();
                var purposeConductTraining      = loanDetailQuery.Where(purpose => purpose.Purpose.Equals("Conduct training, self-education or other professional development activity")).Count();
                var totalPurpose = purposeAssistDecisionMaking + purposeServeAsLoaner + purposeShortTerm + purposeConductTraining;

                // Assigned values to the view model property
                viewModel.TotalNumberOfLoans = numberOfLoans;                            // total number of loans

                viewModel.NumberOfDeviceBorrowerWithDisability = borrowerWithDisability; // Borrower Types
                viewModel.NumberOfBorrowerFamily          = borrowerFamily;
                viewModel.NumberOfBorrowerEducation       = borrowerEducation;
                viewModel.NumberOfBorrowerEmployment      = borrowerEmployment;
                viewModel.NumberOfBorrowerHealth          = borrowerHealth;
                viewModel.NumberOfBorrowerCommunityLiving = borrowerCommunityLiving;
                viewModel.NumberOfBorrowerTechnology      = borrowerTechnology;

                viewModel.categoryCounts = categoryCounts;                      // The list of different categories of inventory

                viewModel.PurposeDecisionMaking  = purposeAssistDecisionMaking; // Purpose Types
                viewModel.PurposeServeAsLoaner   = purposeServeAsLoaner;
                viewModel.PurposeShortTerm       = purposeShortTerm;
                viewModel.PurposeConductTraining = purposeConductTraining;

                viewModel.PurposesTotal          = totalPurpose;
                viewModel.NumberOfTotalBorrowers = totalBorrowers;

                return(viewModel);
            }
        }