Ejemplo n.º 1
0
        public async Task <IActionResult> GenerateStudentFeePdfReportAsync([FromBody] FeeManagementReportQueryAc feeManagementReportQueryAc)
        {
            int currentUserInstituteId = await GetUserCurrentSelectedInstituteIdAsync();

            FeeManagementReportResponseAc feeManagementReportResponse = await _feeManagementRepository.GenerateStudentFeeReportAsync(feeManagementReportQueryAc, currentUserInstituteId);

            return(Ok(feeManagementReportResponse));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        /// <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());
        }
Ejemplo n.º 4
0
        /// <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
            }
        }