public async Task <IActionResult> GenerateStudentFeePdfReportAsync([FromBody] FeeManagementReportQueryAc feeManagementReportQueryAc) { int currentUserInstituteId = await GetUserCurrentSelectedInstituteIdAsync(); FeeManagementReportResponseAc feeManagementReportResponse = await _feeManagementRepository.GenerateStudentFeeReportAsync(feeManagementReportQueryAc, currentUserInstituteId); return(Ok(feeManagementReportResponse)); }
public async Task <FileResult> GenerateStudentFeeExcelReportAsync([FromBody] FeeManagementReportQueryAc feeManagementReportQueryAc) { int currentUserInstituteId = await GetUserCurrentSelectedInstituteIdAsync(); FeeManagementReportResponseAc feeManagementReportResponse = await _feeManagementRepository.GenerateStudentFeeReportAsync(feeManagementReportQueryAc, currentUserInstituteId); return(File(feeManagementReportResponse.FileByteArray, feeManagementReportResponse.ResponseType, feeManagementReportResponse.FileName)); }
/// <summary> /// Method for fetching the student fee details for generating the reports - RS /// </summary> /// <param name="feeManagementReportQueryAc"></param> /// <param name="currentUserInstituteId"></param> /// <returns></returns> private async Task <List <StudentFeeExcelReportAc> > GetStudentFeeDetailsForReportAsync(FeeManagementReportQueryAc feeManagementReportQueryAc, int currentUserInstituteId) { List <StudentFeeExcelReportAc> studentFeeExcelReportAcList = new List <StudentFeeExcelReportAc>(); List <StudentBasicInformation> studentsList = await _imsDbContext.StudentBasicInformation .Include(x => x.Religion) .Include(x => x.CurrentClass) .Include(x => x.SectionMap) .Where(x => x.InstituteId == currentUserInstituteId) .ToListAsync(); List <StudentFeeComponent> studentFeeComponentList = await _imsDbContext.StudentFeeComponents .Include(x => x.IndividualOrDiscountFeeComponent) .Include(x => x.StudentFee) .ThenInclude(x => x.StudentFeeComponents) .ToListAsync(); #region Apply queries if (feeManagementReportQueryAc.ReligionId != 0) { studentsList = studentsList.Where(x => x.ReligionId == feeManagementReportQueryAc.ReligionId).ToList(); } if (feeManagementReportQueryAc.ClassId != 0) { studentsList = studentsList.Where(x => x.CurrentClassId == feeManagementReportQueryAc.ClassId).ToList(); } if (feeManagementReportQueryAc.SectionId != 0) { studentsList = studentsList.Where(x => x.SectionId == feeManagementReportQueryAc.SectionId).ToList(); } if (feeManagementReportQueryAc.StudentId != 0) { studentsList = studentsList.Where(x => x.Id == feeManagementReportQueryAc.StudentId).ToList(); } #endregion foreach (StudentBasicInformation studentBasicInformation in studentsList) { if (studentFeeComponentList.Count == 0) { studentFeeExcelReportAcList.Add(new StudentFeeExcelReportAc { AdmissionNumber = studentBasicInformation.AdmissionNumber, RollNumber = studentBasicInformation.RollNumber, FirstName = studentBasicInformation.FirstName, LastName = studentBasicInformation.LastName, IsActive = studentBasicInformation.IsActive.ToString(), IsArchived = studentBasicInformation.IsArchived.ToString(), CurrentClass = studentBasicInformation.CurrentClass?.Name, Section = studentBasicInformation.SectionMap?.Name, Religion = studentBasicInformation.Religion?.Name }); } else { foreach (StudentFeeComponent studentFeeComponent in studentFeeComponentList) { if (studentFeeComponent.StudentFee.StudentId == studentBasicInformation.Id) { studentFeeExcelReportAcList.Add(new StudentFeeExcelReportAc { AdmissionNumber = studentBasicInformation.AdmissionNumber, RollNumber = studentBasicInformation.RollNumber, FirstName = studentBasicInformation.FirstName, LastName = studentBasicInformation.LastName, IsActive = studentBasicInformation.IsActive.ToString(), IsArchived = studentBasicInformation.IsArchived.ToString(), CurrentClass = studentBasicInformation.CurrentClass?.Name, Section = studentBasicInformation.SectionMap?.Name, Religion = studentBasicInformation.Religion?.Name, FeeComponent = studentFeeComponent.IndividualOrDiscountFeeComponent.Name, FeeComponentType = EnumHelperService.GetDescription(studentFeeComponent.IndividualOrDiscountFeeComponent.FeeComponentType), Amount = studentFeeComponent.Amount, Term = studentFeeComponent.TermOrderId, PaymentDate = studentFeeComponent.StudentFee.UpdatedOn.ToString("dd-MM-yyyy") }); } else { studentFeeExcelReportAcList.Add(new StudentFeeExcelReportAc { AdmissionNumber = studentBasicInformation.AdmissionNumber, RollNumber = studentBasicInformation.RollNumber, FirstName = studentBasicInformation.FirstName, LastName = studentBasicInformation.LastName, IsActive = studentBasicInformation.IsActive.ToString(), IsArchived = studentBasicInformation.IsArchived.ToString(), CurrentClass = studentBasicInformation.CurrentClass?.Name, Section = studentBasicInformation.SectionMap?.Name, Religion = studentBasicInformation.Religion?.Name, FeeComponent = studentFeeComponent.IndividualOrDiscountFeeComponent.Name, FeeComponentType = EnumHelperService.GetDescription(studentFeeComponent.IndividualOrDiscountFeeComponent.FeeComponentType), Amount = 0, Term = 0, PaymentDate = "-" }); } } } } return(studentFeeExcelReportAcList.Distinct().OrderBy(x => x.RollNumber).ThenBy(x => x.FeeComponent).ToList()); }
/// <summary> /// Method for generating the student fee report - RS /// </summary> /// <param name="feeManagementReportQueryAc"></param> /// <param name="currentUserInstituteId"></param> /// <returns></returns> public async Task <FeeManagementReportResponseAc> GenerateStudentFeeReportAsync(FeeManagementReportQueryAc feeManagementReportQueryAc, int currentUserInstituteId) { if (feeManagementReportQueryAc.StudentId != 0) { #region Set pdf data List <StudentFeeExcelReportAc> studentFeeExcelReportAcList = await GetStudentFeeDetailsForReportAsync(feeManagementReportQueryAc, currentUserInstituteId); StudentFeePdfReportAc studentFeePdfReportAc = new StudentFeePdfReportAc { RollNumber = studentFeeExcelReportAcList.First().RollNumber, AdmissionNumber = studentFeeExcelReportAcList.First().AdmissionNumber, FirstName = studentFeeExcelReportAcList.First().FirstName, LastName = studentFeeExcelReportAcList.First().LastName, CurrentClass = studentFeeExcelReportAcList.First().CurrentClass, Section = studentFeeExcelReportAcList.First().Section, Religion = studentFeeExcelReportAcList.First().Religion, IsActive = studentFeeExcelReportAcList.First().IsActive, IsArchived = studentFeeExcelReportAcList.First().IsArchived }; studentFeePdfReportAc.PaymentDetails = new List <StudentFeeExcelReportAc>(); foreach (StudentFeeExcelReportAc studentFeeExcelReportAc in studentFeeExcelReportAcList) { studentFeePdfReportAc.PaymentDetails.Add(new StudentFeeExcelReportAc { FeeComponentType = studentFeeExcelReportAc.FeeComponentType, FeeComponent = studentFeeExcelReportAc.FeeComponent, Term = studentFeeExcelReportAc.Term, Amount = studentFeeExcelReportAc.Amount, PaymentDate = studentFeeExcelReportAc.PaymentDate }); } #endregion #region Generate pdf string path = Path.Combine(Directory.GetCurrentDirectory(), "Views", "Home"); RazorLightEngine engine = new RazorLightEngineBuilder().UseFilesystemProject(path).UseMemoryCachingProvider().Build(); string resultFromFile = engine.CompileRenderAsync("StudentFeeReceiptPdf.cshtml", studentFeePdfReportAc).Result; string fileName = "Fee_Receipt_" + studentFeePdfReportAc.FirstName + "_" + DateTime.Now.Day.ToString("00") + "_" + DateTime.Now.Month.ToString("00") + "_" + DateTime.Now.Year.ToString("0000") + ".pdf"; return(new FeeManagementReportResponseAc { FileName = fileName, ResponseType = "application/pdf", //FileByteArray = PdfHelperService.GeneratePdfFromHtml(resultFromFile, "Reports", fileName) PdfHtmlString = resultFromFile }); #endregion } else { List <StudentFeeExcelReportAc> studentFeeExcelReportAcList = await GetStudentFeeDetailsForReportAsync(feeManagementReportQueryAc, currentUserInstituteId); #region Generate file string fileName = "Fee_Report_" + DateTime.Now.Day.ToString("00") + "_" + DateTime.Now.Month.ToString("00") + "_" + DateTime.Now.Year.ToString("0000") + ".xlsx"; return(new FeeManagementReportResponseAc { FileName = fileName, ResponseType = "application/ms-excel", FileByteArray = ExcelHelperService.GenerateExcelFromList(studentFeeExcelReportAcList, string.Empty) }); #endregion } }