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)); }
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); } }