using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using Neo.Legitimate.Common; using Pilotfish.Afx.ComponentModel; using Pilotfish.Afx.Security; using Neo.Legitimate.Common.Helpers; using System.Threading; using System.Data.Entity; namespace Neo.Legitimate.Data.Models { public partial class LegitimateDatabase { #region GenerateReceiptBatch public long GenerateReceiptBatch(long userID, out string errorMessage) { errorMessage = ""; long? id = -1L; try { id = Context.Pr_ReceiptBatchGenerate(userID).FirstOrDefault(); } catch (Exception ex) { id = -1; errorMessage = GetInnermostMessage(ex); } return id.Value; } #endregion #region GetApplicationsAwaitingReceipts public IEnumerable GetApplicationsAwaitingReceipts(long userID, bool eftOnly) { if (eftOnly) { return Context.Pr_ApplicationRequestDetailsAwaitingReceipts(userID, "3").ToList(); } else { return Context.Pr_ApplicationRequestDetailsAwaitingReceipts(userID, "1,2").ToList(); } } #endregion #region GetApplicationsRecentReceipts public IEnumerable GetApplicationsRecentReceipts() { return Context.Pr_ApplicationRequestDetailsRecentReceipts().ToList(); } #endregion #region GetReceiptDetail public ReceiptDetail GetReceiptDetail(long receiptDetailID, long userID) { if (receiptDetailID == -1) { return new ReceiptDetail() { ReceiptDetailID = -1 }; } var details = (from q in Context.ReceiptDetails.Include("PaymentType") where q.ReceiptDetailID == receiptDetailID select q).FirstOrDefault(); return details; } #endregion #region GetNonBatchedReceiptDetails public IEnumerable GetNonBatchedReceiptDetails(long userID) { return Context.Vw_ReceiptDetails.Where(a => a.CreatedById == userID && a.ReceiptBatchID.Equals(null)).ToList(); } #endregion #region LogPrintReceipt public bool LogPrintReceipt(long receiptDetailID, long userID, out string errorMessage) { errorMessage = ""; try { Context.Pr_LogPrintReceipt(receiptDetailID, userID); } catch (Exception ex) { errorMessage = GetInnermostMessage(ex); } return String.IsNullOrWhiteSpace(errorMessage); } #endregion #region ReceiptApplications public ReceiptDetail ReceiptApplications(long ApplicationRequestDetailID, long userID, out string errorMessage) { var receiptID = -1L; errorMessage = ""; var db = Context.Database.Connection.CreateCommand(); try { if (db.Connection.State != ConnectionState.Open) { db.Connection.Open(); } var receiptDetailIDParam = new SqlParameter("@GeneratedReceiptDetailID", SqlDbType.BigInt) { Direction = ParameterDirection.Output }; Context.Database.ExecuteSqlCommand( "EXEC App.Pr_ReceiptApplications @ApplicationRequestDetailID, @UserID, @GeneratedReceiptDetailID OUTPUT", new SqlParameter { ParameterName = "ApplicationRequestDetailID", Value = ApplicationRequestDetailID }, new SqlParameter { ParameterName = "UserID", Value = userID }, receiptDetailIDParam); receiptID = Convert.ToInt32(receiptDetailIDParam.Value); } catch (Exception ex) { errorMessage = ex.Message; } finally { if (db.Connection.State == ConnectionState.Open) { db.Connection.Close(); } } return GetReceiptDetail(receiptID, userID); } #endregion #region GetUnassignedReceipts public IEnumerable GetUnassignedReceipts() { return Context.Pr_ReceiptsGetUnassigned().ToList(); } #endregion #region GetUnassignedReceipts public ReceiptDetail CreateUnassignedReceipt(long applicationRequestTypeID, long paymentTypeID, string applicantName, string idNumber, string olPermitNumber, string vehicleRegistrationNumber, string chassisNumber, long userID) { var receiptDetailID = Context.Pr_ReceiptCreateUnassignedReceipt(applicationRequestTypeID, paymentTypeID, applicantName, idNumber, olPermitNumber, vehicleRegistrationNumber, chassisNumber, userID).FirstOrDefault(); return GetReceiptDetail(receiptDetailID.Value, userID); } #endregion #region AssignReceipt public void AssignReceipt(long applicationRequestDetailID, long receiptDetailID, long userID) { Context.Pr_ReceiptAssignReceipt(applicationRequestDetailID, receiptDetailID, userID); } #endregion #region CancelReceipt public void CancelReceipt(long receiptDetailID, string reason, long userID) { Context.Pr_ReceiptCancellation(receiptDetailID, reason, userID); } #endregion //#region CreateReceipt //public void CreateReceipt(long applicationrequestDetailID, string receiptType, int receiptNumberOfCopies, long userID, out string errorMessage) //{ // errorMessage = ""; // try // { // Context.Pr_ApplicationRequestCreateReceipt(applicationrequestDetailID, receiptType, receiptNumberOfCopies, userID); // } // catch (Exception ex) // { // errorMessage = ex.InnerException.Message; // } //} //#endregion #region AddHocApplicationCreateReceipt public ReceiptDetail AddHocApplicationCreateReceipt(long applicationrequestDetailID, string receiptType, int receiptNumberOfCopies, long userID, out string errorMessage) { var receiptID = -1L; errorMessage = ""; var db = Context.Database.Connection.CreateCommand(); try { if (db.Connection.State != ConnectionState.Open) { db.Connection.Open(); } db.CommandText = "EXEC App.Pr_ApplicationRequestCreateReceipt @ApplicationRequestDetailID, @ReceiptType, @ReceiptNumberOfCopies, @UserID"; db.Parameters.Add(new SqlParameter { ParameterName = "ApplicationRequestDetailID", Value = applicationrequestDetailID}); db.Parameters.Add(new SqlParameter { ParameterName = "ReceiptType", Value = receiptType }); db.Parameters.Add(new SqlParameter { ParameterName = "ReceiptNumberOfCopies", Value = receiptNumberOfCopies }); db.Parameters.Add(new SqlParameter { ParameterName = "UserID", Value = userID }); var intFound = false; var reader = db.ExecuteReader(); //find the first int in the result sets returned. This caters for multiple results sets which are returned in certain instances do { while (reader.Read() && !intFound) { if (Int64.TryParse(reader[0].ToString(), out receiptID)) { intFound = true; } } } while (!intFound && reader.NextResult()); } catch (Exception ex) { errorMessage = ex.Message; } finally { if (db.Connection.State == ConnectionState.Open) { db.Connection.Close(); } } return GetReceiptDetail(receiptID, userID); } #endregion } }