public async Task <JsonResult> GetDetails(long stdId, byte programId, int semesterId, byte examId) { string root = Server.MapPath("~"); var outputPath = root + @"StudentInfoes"; if (Directory.Exists(outputPath)) { var di = new DirectoryInfo(outputPath); foreach (var file in di.GetFiles()) { file.Delete(); } } else { Directory.CreateDirectory(outputPath); } var std = await db.StudentInfos.Include(s => s.Program).SingleOrDefaultAsync(c => !c.IsDelete && c.Id == stdId); if (std != null) { var result = new PaymentStatusApprovalQuery() { Id = std.Id, IdNo = std.IdNo, Name = std.Name }; var payments = await db.Payments.Include(s => s.Program) .FirstOrDefaultAsync(c => !c.IsDelete && c.ProgramId == programId && c.SemesterId == semesterId && c.ExamId == examId && c.StudentId == std.IdNo); if (payments != null) { result.PaymentStatus = payments.DuesPercentAmount.ToString(); result.PaymentId = payments.Id; } var request = await db.AdmitCardRequests.SingleOrDefaultAsync(c => !c.IsDone && c.StudentInfoId == std.Id); if (request != null) { result.RequestId = request.Id.ToString(); result.RequestedDate = DateTimeFormatter.DateToString(request.RequestedDate); result.Comment = request.Comment; } //var link = "D" + std.PaymentFilePath; //var sourchFile = Path.Combine(link); //var tergetPath = Path.Combine(root + @"\StudentInfoes", std.Id + ".jpg"); //System.IO.File.Copy(sourchFile, tergetPath, true); //result.PaymentFilePath = std.Id + ".jpg"; var request2 = await db.AdmitCardRequests.Where(c => c.IsDone && c.Status && c.StudentInfoId == std.Id).ToListAsync(); foreach (var r in request2) { result.PreviousPermission += "Till: " + DateTimeFormatter.DateToString(r.RequestedDate) + ", "; } return(Json(result, JsonRequestBehavior.AllowGet)); } return(Json(0, JsonRequestBehavior.AllowGet)); }
public JsonResult AdmitDownload(AdmitCardRequestCommand vm) { CultureInfo cInfo = new CultureInfo("en-IN"); ReportViewer viewer = new ReportViewer(); var context = new ApplicationDbContext(); // data source var db = new ApplicationDbContext(); var idNo = vm.IdNo; var s = db.StudentInfos.Include(c => c.Program) .SingleOrDefault(c => c.IdNo == idNo && !c.IsDelete); if (s != null) { var payment = db.Payments.Include(c => c.Semester).Include(c => c.Exam).FirstOrDefault(c => !c.IsDelete && c.ProgramId == s.ProgramId && c.SemesterId == vm.SemesterId && c.ExamId == vm.ExamId && c.StudentId == s.IdNo); var approval = db.AdmitCardApprovals.Any(c => c.PaymentId == payment.Id && !c.IsPrevious && c.IsPaymentComplete && !c.IsDelete && c.StudentInfoId == s.Id); var isSpecial = db.AdmitCardApprovals.Any(c => c.PaymentId == payment.Id && !c.IsPrevious && c.IsSpecialPermission && !c.IsDelete && c.StudentInfoId == s.Id); var isPending = db.AdmitCardRequests.Any(c => !c.IsDone && c.StudentInfoId == s.Id); if (isPending) { return(Json("00", JsonRequestBehavior.AllowGet)); } var admit = new AdmitCardQuery(); if (approval) { string path = Path.Combine(Server.MapPath("~/Reports"), "AdmitCardReport.rdlc"); viewer.LocalReport.ReportPath = path; admit.Id = s.Id; admit.IdNo = s.IdNo; admit.Name = s.Name; admit.Program = s.Program.Name + "(" + s.Program.ShortName + ")"; if (payment != null) { admit.Exam = payment.Exam.Name; admit.Semester = payment.Semester.Name + " " + payment.Semester.Year; } else { admit.Exam = "-"; admit.Semester = "-"; } admit.ContactNo = s.ContactNo; admit.Email = s.Email; } if (isSpecial) { string path = Path.Combine(Server.MapPath("~/Reports"), "DueAdmitCardReport.rdlc"); viewer.LocalReport.ReportPath = path; var special = db.AdmitCardApprovals.Where(c => c.IsSpecialPermission && !c.IsDelete && c.StudentInfoId == s.Id).OrderByDescending(c => c.Id).FirstOrDefault(); admit.Id = s.Id; admit.IdNo = s.IdNo; admit.Name = s.Name; admit.Program = s.Program.Name + "(" + s.Program.ShortName + ")"; if (payment != null) { admit.Exam = payment.Exam.Name; admit.Semester = payment.Semester.Name + " " + payment.Semester.Year; } else { admit.Exam = "-"; admit.Semester = "-"; } admit.ContactNo = DateTimeFormatter.DateToString(special.ExceptedDate); admit.Email = s.Email; } // Image and QR if (!string.IsNullOrEmpty(s.ImageFilePath)) { var image = @"D" + s.ImageFilePath; admit.StudentImage = System.IO.File.ReadAllBytes(image); } else { admit.StudentImage = new byte[0]; } var encoder = new QRCodeEncoder { QRCodeScale = 3 }; var bmp = encoder.Encode(s.IdNo); admit.Qr = ImageToByte(bmp); var dataList = new List <AdmitCardQuery> { admit }; var rds = new ReportDataSource("DataSet1", dataList); viewer.LocalReport.DataSources.Add(rds); Warning[] warnings; string[] streamIds; string mimeType = string.Empty; string encoding = string.Empty; string extension = string.Empty; byte[] bytes = viewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamIds, out warnings); string fileName = s.IdNo; string outputPath = "~/PdfReports/"; if (Directory.Exists(Server.MapPath(outputPath))) { var files = Directory.GetFiles(Server.MapPath(outputPath)); foreach (var f in files) { System.IO.File.Delete(f); } } else { Directory.CreateDirectory(Server.MapPath(outputPath)); } using (var stream = System.IO.File.Create(Path.Combine(Server.MapPath(outputPath), fileName + ".pdf"))) { stream.Write(bytes, 0, bytes.Length); } var pdfHref = "/PdfReports/" + fileName + ".pdf"; return(Json(pdfHref, JsonRequestBehavior.AllowGet)); } return(Json("0", JsonRequestBehavior.AllowGet)); }