using Neo.Afx.Services.Workflows; using Neo.LegitimateLicences.Common; using Neo.LegitimateLicences.Common.Helpers; using Neo.LegitimateLicences.Data.Models; using Neo.Afx.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Neo.Afx.Admin.Security; using System.Dynamic; namespace Neo.LegitimateLicences.Applications { public partial class ApplicationsController : Neo.LegitimateLicences.Common.ControllerBase { #region Action Results #region Cashup public ActionResult Cashup() { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.CashupModule)) { return RedirectToAction("Default", "Applications"); } var database = new LegitimateDatabase(); var model = new CashupModel { CashupUsers = database.GetCashupUsers(Profile.UserID), }; WebHelper.SetLastPageVisited(HttpContext, "Applications/Cashup"); ViewBag.Controller = "Applications"; ViewBag.Page = "Cashup"; return View("Cashup.List", model); } #endregion #region CashupUserPage public ActionResult CashupUserPage(long userID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.CashupModule)) { return RedirectToAction("Default", "Applications"); } var database = new LegitimateDatabase(); var securityDb = new SecurityDatabase(); var userDetails = database.GetCashupUsers(userID).Where(a => a.UserID == userID).FirstOrDefault(); var model = new CashupUserPageModel { ReceiptsAwaitingCashup = database.GetNonBatchedCashReceiptDetails(userID, Profile.UserID), //RecentCashups = database.GetRecentCashups(userID, Profile.UserID), CashierName = userDetails.KnownAs, UserID = userID }; ViewBag.Controller = "Applications"; ViewBag.Page = "CashupUserPage"; return View("Cashup.UserPage", model); } #endregion #region ReceiptManagement public ActionResult ReceiptManagement(string receiptNumber) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_ReceiptManagement)) { return RedirectToAction("Default", "Applications"); } var database = new LegitimateDatabase(); if (receiptNumber == "-1") { var model = new ReceiptManagementModel { DefaultPrinterName = Profile.Settings["DefaultPrinterName"], ReceiptNumber = "" }; ViewBag.Controller = "Applications"; ViewBag.Page = "ReceiptManagement"; return View("Cashup.ReceiptManagement", model); } else { var model = new ReceiptManagementModel { DefaultPrinterName = Profile.Settings["DefaultPrinterName"], ReceiptNumber = receiptNumber }; ViewBag.Controller = "Applications"; ViewBag.Page = "ReceiptManagement"; return View("Cashup.ReceiptManagement", model); } } #endregion #region CashupHistory public ActionResult CashupHistory() { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.CashupModule)) { return RedirectToAction("Default", "Applications"); } var database = new LegitimateDatabase(); var model = new CashupModel { Cashups = new List(), CashupUsers = database.GetCashupUsers(Profile.UserID) }; WebHelper.SetLastPageVisited(HttpContext, "Applications/CashupHistory"); ViewBag.Controller = "Applications"; ViewBag.Page = "CashupHistory"; return View("Cashup.History", model); } #endregion #endregion #region JSON endpoints #region ReprintReceipt [HttpPost] public JsonResult PrintReceipt(long receiptDetailID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Receipts_ReprintReceipt)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); Pr_GetReceiptDetails_Result receiptDetail = null; var errorMessage = ""; try { receiptDetail = (receiptDetailID > 0) ? database.GetReceipt(receiptDetailID, Profile.UserID) : null; 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 #region StartReceiptPrintout [HttpPost] public JsonResult StartReceiptPrintout(int entityID, long itemID, short printoutTypeID, bool isReprint, string reprintReason, bool isTestPrint) { var database = new LegitimateDatabase(); database.WriteAuditEntry((int)Profile.UserID, "Application", "Receipt Printed", reprintReason, false, false, "receiptdetails", itemID); var verificationToken = database.CreateVerifiedPrintout(entityID, itemID, printoutTypeID, Profile.UserID, isReprint, reprintReason, isTestPrint, ""); var error = ""; var result = new { Success = (error == ""), PrintoutToken = verificationToken, ErrorMessage = error }; return Json(result, JsonSerializerOptions.None); } #endregion #region CancelReceipt [HttpPost] public JsonResult CancelReceipt(long receiptDetailID, string reason) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.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 ReceiptManagement_SearchByReceiptNumber [HttpPost] public JsonResult ReceiptManagement_SearchByReceiptNumber(string ReceiptNumber) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_ReceiptManagement)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var database = new LegitimateDatabase(); dynamic response = new ExpandoObject(); List receipt = new List(); try { receipt = database.Application_GetReceipt(ReceiptNumber, Profile.UserID); success = true; } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { Receipt = receipt, Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region ReceiptManagement_SetReceiptToZero [HttpPost] public JsonResult ReceiptManagement_SetReceiptToZero(long? ReceiptDetailID, string reason) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_Receipts_SetReceiptToZero)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var database = new LegitimateDatabase(); try { database.Application_SetReceiptToZero(ReceiptDetailID, reason, Profile.UserID); success = true; } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region ReceiptManagement_AddReceiptToApplication [HttpPost] public JsonResult ReceiptManagement_AddReceiptToApplication(long? ReceiptDetailID, string applicationReferenceNumber, string reason) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_AddApplicationToReceipt)) { throw new Exception("Security error"); } var errorMessage = ""; var success = false; var database = new LegitimateDatabase(); try { database.AddReceiptToApplication(ReceiptDetailID, applicationReferenceNumber, reason, Profile.UserID); success = true; } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var results = new { Success = success, ErrorMessage = errorMessage }; return Json(results, JsonSerializerOptions.None); } #endregion #region GenerateReceiptBatch [HttpPost] public JsonResult GenerateReceiptBatch(long userID) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.CashupModule_ReceiptBatchGenerate)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; var success = false; long? receiptBatchID = null; try { receiptBatchID = database.GenerateReceiptBatch(userID, Profile.UserID, out errorMessage); success = true; } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var result = new { ReceiptBatchID = receiptBatchID, Success = success, ErrorMessage = errorMessage }; return Json(result, JsonSerializerOptions.FormatDateTime); } #endregion #region SearchReceiptBatch [HttpPost] public JsonResult SearchReceiptBatch(long? paymentClerkID, DateTime? fromDate, DateTime? toDate) { if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.CashupModule)) { throw new Exception("Security error"); } var database = new LegitimateDatabase(); var errorMessage = ""; var success = false; List receiptBatches = null; try { receiptBatches = database.SearchCashups(paymentClerkID, fromDate, toDate, Profile.UserID); success = true; } catch (Exception ex) { errorMessage = database.GetInnermostMessage(ex); } var result = new { data = receiptBatches, Success = success, ErrorMessage = errorMessage }; return Json(result, JsonSerializerOptions.FormatDateTime); } #endregion //#region ReceiptManagement_SearchReceiptBatch //[HttpPost] //public JsonResult ReceiptManagement_SearchReceiptBatch(string batchNumber, int userID) //{ // if (!SecurityHelper.UserHasAccessToSecurable(Profile.Securables.ToList(), SecurableEnum.ApplicationsModule_ReceiptManagement)) // { // throw new Exception("Security error"); // } // var errorMessage = ""; // var success = false; // var database = new LegitimateDatabase(); // dynamic response = new ExpandoObject(); // Pr_GetRecentCashups_Result batch = new Pr_GetRecentCashups_Result(); // try // { // batch = database.GetRecentCashups(userID).FirstOrDefault(b => b.ReferenceNumber == batchNumber); // success = true; // } // catch (Exception ex) // { // errorMessage = database.GetInnermostMessage(ex); // } // var results = new // { // ReceiptBatchID = batch.ReceiptBatchID, // Success = success, // ErrorMessage = errorMessage // }; // return Json(results, JsonSerializerOptions.None); //} //#endregion #endregion } }