using System.Web.Mvc; using Neo.Legitimate.Applications.Models; using Neo.Legitimate.Data.Models; using Pilotfish.Afx.Mvc; using System.Collections.Generic; using Neo.Legitimate.Common; using System.Linq; using System; using Neo.Legitimate.Common.Helpers; namespace Neo.Legitimate.Applications.Controllers { public partial class ApplicationsController : Neo.Legitimate.Common.ControllerBase { #region Action Results #region Receipt public ActionResult Receipt() { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_Receipts)) { return RedirectToAction("Default", "Applications"); } var database = new LegitimateDatabase(); var requestTypes = database.GetApplicationRequestTypes((short)Workflows.ApplicationRequest); var model = new ReceiptModel { UnassignedReceipts = database.GetUnassignedReceipts(), ApplicationRequestTypes = (requestTypes != null) ? requestTypes.Where(a => a.ApplicationRequestTypeID <= 11 || a.ApplicationRequestTypeID == 13 || a.ApplicationRequestTypeID == 29).ToList() : null, PaymentTypes = database.GetPaymentTypes(), ApplicationsAwaitingReceiptEFT = database.GetApplicationsAwaitingReceipts(Profile.UserID, true), ApplicationsAwaitingReceipt = database.GetApplicationsAwaitingReceipts(Profile.UserID, false), RecentReceipts = database.GetApplicationsRecentReceipts(), ReceiptsAwaitingCashup = database.GetNonBatchedReceiptDetails(Profile.UserID), DefaultPrinterName = Profile.Settings["DefaultPrinterName"] }; WebHelper.SetLastPageVisited(HttpContext, "Applications/Receipt"); ViewBag.Controller = "Applications"; ViewBag.Page = "Receipts"; return View("Receipt", model); } #endregion #endregion #region JSON endpoints #region ReceiptApplications [HttpPost] public JsonResult ReceiptApplications(long ApplicationRequestDetailID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_Receipts_Flagasreceived) && !SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_Receipts_Generateandprintreceipt)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; var receiptDetail = database.ReceiptApplications(ApplicationRequestDetailID, Profile.UserID, out errorMessage); var results = new { ReceiptDetail = receiptDetail, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region GetApplicationsAwaitingReceipt [HttpPost] public JsonResult GetApplicationsAwaitingReceipt() { var database = new LegitimateDatabase(); return Json(database.GetApplicationsAwaitingReceipts(Profile.UserID, false), JsonSerializerOptions.FormatDateTime); } #endregion #region GetApplicationsAwaitingReceiptEFT [HttpPost] public JsonResult GetApplicationsAwaitingReceiptEFT() { var database = new LegitimateDatabase(); return Json(database.GetApplicationsAwaitingReceipts(Profile.UserID, true), JsonSerializerOptions.FormatDateTime); } #endregion #region GetUnassignedReceipts [HttpPost] public JsonResult GetUnassignedReceipts() { var database = new LegitimateDatabase(); return Json(database.GetUnassignedReceipts(), JsonSerializerOptions.FormatDateTime); } #endregion #region GetRecentReceipts [HttpPost] public JsonResult GetRecentReceipts() { var database = new LegitimateDatabase(); return Json(database.GetApplicationsRecentReceipts(), JsonSerializerOptions.FormatDateTime); } #endregion #region GetReceiptsAwaitingCashup [HttpPost] public JsonResult GetReceiptsAwaitingCashup() { var database = new LegitimateDatabase(); return Json(database.GetNonBatchedReceiptDetails(Profile.UserID), JsonSerializerOptions.FormatDateTime); } #endregion //#region GenerateReceiptBatch //[HttpPost] //public JsonResult GenerateReceiptBatch() //{ // var database = new LegitimateDatabase(); // var errorMessage = ""; // var receiptBatchID = database.GenerateReceiptBatch(Profile.UserID, out errorMessage); // var result = new // { // ReceiptBatchID = receiptBatchID, // ErrorMessage = errorMessage // }; // return Json(result, JsonSerializerOptions.FormatDateTime); //} //#endregion #region CreateUnassignedReceipt [HttpPost] public JsonResult CreateUnassignedReceipt(long applicationRequestTypeID, long paymentTypeID, string applicantName, string idNumber, string olPermitNumber, string vehicleRegistrationNumber, string chassisNumber) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_Receipts_Createreceipt)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); ReceiptDetail receiptDetail = null; var errorMessage = ""; try { receiptDetail = database.CreateUnassignedReceipt(applicationRequestTypeID, paymentTypeID, applicantName, idNumber, olPermitNumber, vehicleRegistrationNumber, chassisNumber, Profile.UserID); } catch (Exception ex) { errorMessage = ex.Message; } var results = new { ReceiptDetail = receiptDetail, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region AssignReceipt [HttpPost] public JsonResult AssignReceipt(long applicationRequestDetailID, long receiptDetailID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_Receipts_Assignreceipt)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; try { database.AssignReceipt(applicationRequestDetailID, receiptDetailID, Profile.UserID); } catch (Exception ex) { errorMessage = ex.Message; } var results = new { result = true, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region CancelReceipt [HttpPost] public JsonResult CancelReceipt(long receiptDetailID, string reason) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_Receipts_CancelReceipt)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; try { database.CancelReceipt(receiptDetailID, reason, Profile.UserID); } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { result = true, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion //#region ReprintReceipt //[HttpPost] //public JsonResult ReprintReceipt(long receiptDetailID) //{ // if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), Securable.ApplicationsModule_ApplicationRequest_ReprintReceipt)) // { // throw new Exception("Security error"); // } // var database = new LegitimateDatabase(); // ReceiptDetail receiptDetail = null; // var errorMessage = ""; // try // { // receiptDetail = database.GetReceiptDetail(receiptDetailID, Profile.UserID); // database.WriteAuditEntry(Convert.ToInt32(Profile.UserID), "application", "deleted", "Re-printed receipt", false, false, "ReceiptDetails", receiptDetailID); // } // catch (Exception ex) // { // errorMessage = ex.Message; // } // var results = new // { // ReceiptDetail = receiptDetail, // ErrorMessage = errorMessage // }; // return Json(results, JsonSerializerOptions.None); //} //#endregion #endregion } }