using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using Neo.LegitimateLicences.Common; using Neo.Afx.ComponentModel; using Neo.Afx.Security; using Neo.LegitimateLicences.Common.Helpers; using System.Threading; using System.Data.Entity; namespace Neo.LegitimateLicences.Data.Models { public partial class LegitimateDatabase { #region GenerateReceiptBatch public long GenerateReceiptBatch(long receiptUserID, long userID, out string errorMessage) { errorMessage = ""; long? id = -1L; try { id = Context.Pr_ReceiptBatchGenerate(receiptUserID, 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 GetReceipt public Pr_GetReceiptDetails_Result GetReceipt(long receiptDetailID, long userID) { if (receiptDetailID == -1) { return new Pr_GetReceiptDetails_Result() { ReceiptDetailID = -1 }; } var details = Context.Pr_GetReceiptDetails(receiptDetailID, userID).FirstOrDefault(); return details; } #endregion #region GetNonBatchedReceiptDetails public IEnumerable GetNonBatchedReceiptDetails(long userID) { return Context.Vw_ReceiptDetails.Where(a => a.CreatedById == userID && a.ReceiptBatchID.Equals(null) && (a.PaymentTypeID == (short)PaymentTypeEnum.Cash)).ToList(); } #endregion #region ReceiptApplication public long ReceiptApplication(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_ReceiptApplication @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 receiptID; } #endregion #region GetUnassignedReceipts public List GetUnassignedReceipts(long userID) { return Context.Pr_ReceiptsGetUnassigned(userID).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 #region AddHocApplicationCreateReceipt public List GetNonBatchedCashReceiptDetails(long receiptUserID, long userID) { return Context.Pr_NonBatchedCashReceiptDetailsGet(receiptUserID, userID).ToList(); } #endregion } }