예제 #1
0
        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));
        }
예제 #2
0
        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));
        }