using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; using FastReport; using FastReport.Export.Csv; using FastReport.Export.Mht; using FastReport.Export.OoXML; using FastReport.Export.Pdf; using Microsoft.AspNetCore.Mvc; using rmutr_report.Models; using rmutr_report.Models.Hr; using Swashbuckle.AspNetCore.Annotations; namespace rmutr_report.Controllers { [SwaggerTag("สำหรับรายงาน HR")] public class PersonnelController : Controller { readonly Setting _setting; public PersonnelController(Setting setting) { this._setting = setting; } [HttpPost, Route("reports/personnel_summary/{type}")] [ApiExplorerSettings(GroupName = "reports")] public IActionResult GetHrReport([FromRoute] string type, [FromBody] personnel_summary personnel_summarys) { foreach (var v in personnel_summarys.personnel_types) { if (v.count != null) { var total = personnel_summarys.personnel_types.Select(r => r.count).Sum(t => t.Value); personnel_summarys.total_pertype = total; } else { return null; } } var personnel_summaryss = new List() {personnel_summarys}; Report report = new Report(); report.Load(_setting.report_path + "personnel_summary.frx"); report.RegisterData(personnel_summaryss, "personnel_summary"); report.Prepare(); MemoryStream stream = new MemoryStream(); switch (type) { case "pdf": PDFExport pdf = new PDFExport(); report.Export(pdf, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/pdf"); case "xls": case "xlsx": Excel2007Export excel = new Excel2007Export(); report.Export(excel, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/vnd.ms-excel"); break; case "mht": MHTExport mht = new MHTExport(); report.Export(mht, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "multipart/related"); break; case "csv": CSVExport csv = new CSVExport(); report.Export(csv, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "text/csv"); break; } return Ok(); } [HttpPost, Route("reports/man_power/{type}")] [ApiExplorerSettings(GroupName = "reports")] public IActionResult GetManReport([FromRoute] string type, [FromBody] List man_powers) { //var personnel_summaryss = new List() { personnel_summarys }; Report report = new Report(); report.Load(_setting.report_path + "man_power.frx"); report.RegisterData(man_powers, "man_power"); report.Prepare(); MemoryStream stream = new MemoryStream(); switch (type) { case "pdf": PDFExport pdf = new PDFExport(); report.Export(pdf, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/pdf"); case "xls": case "xlsx": Excel2007Export excel = new Excel2007Export(); report.Export(excel, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/vnd.ms-excel"); break; case "mht": MHTExport mht = new MHTExport(); report.Export(mht, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "multipart/related"); break; case "csv": CSVExport csv = new CSVExport(); report.Export(csv, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "text/csv"); break; } return Ok(); } [HttpPost, Route("reports/data_line_support/{type}")] [ApiExplorerSettings(GroupName = "reports")] public IActionResult GetDataLineReport([FromRoute] string type, [FromBody] data_line_support data_line_supports) { var data_line_supportss = new List() {data_line_supports}; Report report = new Report(); report.Load(_setting.report_path + "data_line_support.frx"); report.RegisterData(data_line_supportss, "data_line_support"); report.Prepare(); MemoryStream stream = new MemoryStream(); switch (type) { case "pdf": PDFExport pdf = new PDFExport(); report.Export(pdf, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/pdf"); case "xls": case "xlsx": Excel2007Export excel = new Excel2007Export(); report.Export(excel, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/vnd.ms-excel"); break; case "mht": MHTExport mht = new MHTExport(); report.Export(mht, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "multipart/related"); break; case "csv": CSVExport csv = new CSVExport(); report.Export(csv, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "text/csv"); break; } return Ok(); } [HttpPost, Route("reports/data_line_academic/{type}")] [ApiExplorerSettings(GroupName = "reports")] public IActionResult GetDataLineAcaReport([FromRoute] string type, [FromBody] data_line_academic data_line_academicss) { var _data_line_academics = new List() {data_line_academicss}; Report report = new Report(); report.Load(_setting.report_path + "data_line_academic.frx"); report.RegisterData(_data_line_academics, "data_line_academic"); report.Prepare(); MemoryStream stream = new MemoryStream(); switch (type) { case "pdf": PDFExport pdf = new PDFExport(); report.Export(pdf, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/pdf"); case "xls": case "xlsx": Excel2007Export excel = new Excel2007Export(); report.Export(excel, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/vnd.ms-excel"); break; case "mht": MHTExport mht = new MHTExport(); report.Export(mht, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "multipart/related"); break; case "csv": CSVExport csv = new CSVExport(); report.Export(csv, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "text/csv"); break; } return Ok(); } [HttpPost, Route("reports/qualifications_teacher/{type}")] [ApiExplorerSettings(GroupName = "reports")] public IActionResult GetQualificationsTeacherReport([FromRoute] string type, [FromBody] qualifications_teacher qualifications_teachers) { var qualifications_teacherss = new List() {qualifications_teachers}; Report report = new Report(); report.Load(_setting.report_path + "qualifications_teacher.frx"); report.RegisterData(qualifications_teacherss, "qualifications_teacher"); report.Prepare(); MemoryStream stream = new MemoryStream(); switch (type) { case "pdf": PDFExport pdf = new PDFExport(); report.Export(pdf, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/pdf"); case "xls": case "xlsx": Excel2007Export excel = new Excel2007Export(); report.Export(excel, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/vnd.ms-excel"); break; case "mht": MHTExport mht = new MHTExport(); report.Export(mht, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "multipart/related"); break; case "csv": CSVExport csv = new CSVExport(); report.Export(csv, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "text/csv"); break; } return Ok(); } [HttpPost, Route("reports/academic_position/{type}")] [ApiExplorerSettings(GroupName = "reports")] public IActionResult GetAcademicPositionReport([FromRoute] string type, [FromBody] academic_position _academic_position) { var academic_positions = new List() {_academic_position}; Report report = new Report(); report.Load(_setting.report_path + "academic_position.frx"); report.RegisterData(academic_positions, "academic_position"); report.Prepare(); MemoryStream stream = new MemoryStream(); switch (type) { case "pdf": PDFExport pdf = new PDFExport(); report.Export(pdf, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/pdf"); case "xls": case "xlsx": Excel2007Export excel = new Excel2007Export(); report.Export(excel, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/vnd.ms-excel"); break; case "mht": MHTExport mht = new MHTExport(); report.Export(mht, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "multipart/related"); break; case "csv": CSVExport csv = new CSVExport(); report.Export(csv, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "text/csv"); break; } return Ok(); } [HttpPost, Route("reports/postponement_compensation/{type}")] [ApiExplorerSettings(GroupName = "reports")] public IActionResult GetPostponementCompensationReport([FromRoute] string type, [FromBody] postponement_compensation postponement_compensations) { if (postponement_compensations.get_promoted == true) { postponement_compensations.check_get_promoted = "/"; postponement_compensations.reason = ""; } if (postponement_compensations.get_promoted == false) { postponement_compensations.check_get_promoted = ""; } if (postponement_compensations.not_get_promoted == true) { postponement_compensations.check_not_get_promoted = "/"; } if (postponement_compensations.not_get_promoted == false) { postponement_compensations.check_not_get_promoted = ""; } string NumberText1 = postponement_compensations.data_date; var str1 = NumberText1.Replace('0', '๐').Replace('1', '๑').Replace('2', '๒').Replace('3', '๓') .Replace('4', '๔').Replace('5', '๕').Replace('6', '๖').Replace('7', '๗').Replace('8', '๘') .Replace('9', '๙'); postponement_compensations.data_date = str1; string NumberText2 = postponement_compensations.start_date; var str2 = NumberText2.Replace('0', '๐').Replace('1', '๑').Replace('2', '๒').Replace('3', '๓') .Replace('4', '๔').Replace('5', '๕').Replace('6', '๖').Replace('7', '๗').Replace('8', '๘') .Replace('9', '๙'); postponement_compensations.start_date = str2; string NumberText3 = postponement_compensations.end_date; var str3 = NumberText3.Replace('0', '๐').Replace('1', '๑').Replace('2', '๒').Replace('3', '๓') .Replace('4', '๔').Replace('5', '๕').Replace('6', '๖').Replace('7', '๗').Replace('8', '๘') .Replace('9', '๙'); postponement_compensations.end_date = str3; string NumberText4 = postponement_compensations.base_calculation_date; var str4 = NumberText4.Replace('0', '๐').Replace('1', '๑').Replace('2', '๒').Replace('3', '๓') .Replace('4', '๔').Replace('5', '๕').Replace('6', '๖').Replace('7', '๗').Replace('8', '๘') .Replace('9', '๙'); postponement_compensations.base_calculation_date = str4; string NumberText5 = postponement_compensations.director_date; var str5 = NumberText5.Replace('0', '๐').Replace('1', '๑').Replace('2', '๒').Replace('3', '๓') .Replace('4', '๔').Replace('5', '๕').Replace('6', '๖').Replace('7', '๗').Replace('8', '๘') .Replace('9', '๙'); postponement_compensations.director_date = str5; foreach (var data in postponement_compensations.data) { if (data.base_calculation != null) { string NumberText = data.base_calculation.ToString(); var str = NumberText.Replace('0', '๐').Replace('1', '๑').Replace('2', '๒').Replace('3', '๓') .Replace('4', '๔').Replace('5', '๕').Replace('6', '๖').Replace('7', '๗').Replace('8', '๘') .Replace('9', '๙'); if (str.Length == 4) { for (int i = 1; i <= str.Length - 1; i += 4) { postponement_compensations.money1 = str.Insert(i, ","); } } else if (str.Length == 5) { for (int i = 2; i <= str.Length - 1; i += 5) { postponement_compensations.money1 = str.Insert(i, ","); } } else { postponement_compensations.money1 = str; } } if (data.compensation_slide != null) { string NumberText = data.compensation_slide.ToString(); var str = NumberText.Replace('0', '๐').Replace('1', '๑').Replace('2', '๒').Replace('3', '๓') .Replace('4', '๔').Replace('5', '๕').Replace('6', '๖').Replace('7', '๗').Replace('8', '๘') .Replace('9', '๙'); if (str.Length == 4) { for (int i = 1; i <= str.Length - 1; i += 4) { postponement_compensations.money2 = str.Insert(i, ","); } } else if (str.Length == 5) { for (int i = 2; i <= str.Length - 1; i += 5) { postponement_compensations.money2 = str.Insert(i, ","); } } else { postponement_compensations.money2 = str; } } if (data.compensation_receive != null) { string NumberText = data.compensation_receive.ToString(); var str = NumberText.Replace('0', '๐').Replace('1', '๑').Replace('2', '๒').Replace('3', '๓') .Replace('4', '๔').Replace('5', '๕').Replace('6', '๖').Replace('7', '๗').Replace('8', '๘') .Replace('9', '๙'); if (str.Length == 4) { for (int i = 1; i <= str.Length - 1; i += 4) { postponement_compensations.money3 = str.Insert(i, ","); } } else if (str.Length == 5) { for (int i = 2; i <= str.Length - 1; i += 5) { postponement_compensations.money3 = str.Insert(i, ","); } } else { postponement_compensations.money3 = str; } } string NumberText6 = data.percentage.ToString(); var str6 = NumberText6.Replace('0', '๐').Replace('1', '๑').Replace('2', '๒').Replace('3', '๓') .Replace('4', '๔').Replace('5', '๕').Replace('6', '๖').Replace('7', '๗').Replace('8', '๘') .Replace('9', '๙'); postponement_compensations.percentage = str6; } var _postponement_compensations = new List() {postponement_compensations}; Report report = new Report(); report.Load(_setting.report_path + "postponement_compensation.frx"); report.RegisterData(_postponement_compensations, "postponement_compensation"); report.Prepare(); MemoryStream stream = new MemoryStream(); switch (type) { case "pdf": PDFExport pdf = new PDFExport(); report.Export(pdf, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/pdf"); case "xls": case "xlsx": Excel2007Export excel = new Excel2007Export(); report.Export(excel, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "application/vnd.ms-excel"); break; case "mht": MHTExport mht = new MHTExport(); report.Export(mht, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "multipart/related"); break; case "csv": CSVExport csv = new CSVExport(); report.Export(csv, stream); stream.Seek(0, SeekOrigin.Begin); return File(stream, "text/csv"); break; } return Ok(); } } }