using System; using System.Data; using Ease.Core.DataAccess; using HRM.BO; namespace HRM.DA { public class AssetSerialDA { #region Constructor private AssetSerialDA() { } #endregion #region Get internal static IDataReader Get(TransactionContext tc, int id) { return tc.ExecuteReader("SELECT * FROM AssetSerial WHERE AssetSerialID=%n", id); } internal static IDataReader Get(TransactionContext tc) { return tc.ExecuteReader("SELECT * FROM AssetSerial"); } #endregion #region Insert internal static void Insert(TransactionContext tc, AssetSerial oAssetSerial) { string sql = SQLParser.MakeSQL("INSERT INTO AssetSerial(AssetSerialID, AssetID, SerialNo, ReceivedDate," + "VendorID, StoreID, Specification,UniqueIndentifier,Price,ExpiryDays,BatchNo,Remarks,AssetStatus,AssetReceiverType,AssetReceiverID,AssignDate,CreatedBy, CreatedDate)" + "VALUES(%n, %n, %s, %d, %n, %n, %s,%s, %n, %n, %s,%s,%n,%n,%n,%d,%n,%d)", oAssetSerial.ID, oAssetSerial.AssetId, oAssetSerial.SerialNo, oAssetSerial.ReceivedDate, oAssetSerial.VendorId, oAssetSerial.StoreId, oAssetSerial.Specification, oAssetSerial.UniqueIndentifier, oAssetSerial.Price, oAssetSerial.ExpiryDays, oAssetSerial.BatchNo, oAssetSerial.Remarks, oAssetSerial.AssetStatus, oAssetSerial.AssetReceiverType, oAssetSerial.AssetReceiverId, DataReader.GetNullValue(oAssetSerial.AssignDate), DataReader.GetNullValue(oAssetSerial.CreatedBy), DataReader.GetNullValue(oAssetSerial.CreatedDate)); tc.ExecuteNonQuery(sql); } #endregion #region Update internal static void Update(TransactionContext tc, AssetSerial oAssetSerial) { string sSQL = SQLParser.MakeSQL("UPDATE AssetSerial SET AssetID=%s,SerialNo=%s,ReceivedDate=%d," + " VendorID=%n,StoreID=%n,Specification=%s,UniqueIndentifier=%s,Price=%n,ExpiryDays=%n,BatchNo=%s,Remarks=%s,AssetStatus=%n,AssetReceiverType=%n,AssetReceiverID=%n,AssignDate=%d" + ",FaultybyEmpID=%n ModifiedBy=%n,ModifiedDate=%d, WHERE AssetSerialID=%n", oAssetSerial.AssetId, oAssetSerial.SerialNo, oAssetSerial.ReceivedDate, oAssetSerial.VendorId, oAssetSerial.StoreId, oAssetSerial.Specification, oAssetSerial.UniqueIndentifier, oAssetSerial.Price, oAssetSerial.ExpiryDays, oAssetSerial.BatchNo, oAssetSerial.Remarks, oAssetSerial.AssetStatus, oAssetSerial.AssetReceiverType, oAssetSerial.AssetReceiverType, oAssetSerial.AssetReceiverId, DataReader.GetNullValue(oAssetSerial.AssignDate),oAssetSerial.FaultybyEmpID, DataReader.GetNullValue(oAssetSerial.ModifiedBy), DataReader.GetNullValue(oAssetSerial.ModifiedDate), oAssetSerial.ID); tc.ExecuteNonQuery(sSQL); } internal static void UpdateFaultyEmp(TransactionContext tc, int AssetSerialID , int? empid) { string sSQL = SQLParser.MakeSQL("UPDATE AssetSerial SET faultybyEmpID=%n WHERE AssetSerialID=%n", empid, AssetSerialID); tc.ExecuteNonQuery(sSQL); } internal static IDataReader GetAssetSerials(TransactionContext tc, DateTime? fromDate, DateTime? toDate, int assetid, int vendorid, int storid, EnumAssetStatus? status, EnumAssetReceiverType? receiverType,string receiverIds) { DataSet dSet = new DataSet(); string sql = string.Empty; if (fromDate != null) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("CAST(l.ReceivedDate as DATE) >= CAST(%d as Date)", fromDate); } if (toDate != null) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("CAST(l.ReceivedDate as DATE) <= CAST(%d as Date)", toDate); } if (vendorid > 0) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("l.vendorid = %n", vendorid); } if (storid > 0) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("l.storeid = %n", storid); } if (assetid > 0) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("l.assetid = %n", assetid); } if (receiverType != null) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("l.AssetReceiverType = %n", receiverType); } if (!String.IsNullOrEmpty(receiverIds)) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("l.AssetReceiverID in (%q)", receiverIds); } if (status != EnumAssetStatus.None && status != null) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("l.AssetStatus = %n", (int)status); } string sqlQuery = SQLParser.MakeSQL(@" SELECT l.*,e.EMPLOYEENO,v.Name vendor,loc.DESCRIPTION store,e.EMPLOYEEID,e.Name EmployeeName, d.NAME Designation FROM AssetSerial l LEFT JOIN Vendor v ON v.VendorID = l.VendorID -- LEFT JOIN store s ON s.storeID = l.storeID LEFT JOIN EMPLOYEE AS e ON e.EMPLOYEEID=l.AssetReceiverID AND l.AssetReceiverType=%n LEFT JOIN LOCATION as loc on loc.LOCATIONID=e.LOCATIONID LEFT JOIN DESIGNATION AS d ON d.DESIGNATIONID=e.DESIGNATIONID %q", EnumAssetReceiverType.Employee, sql); return tc.ExecuteReader(sqlQuery); } internal static IDataReader GetLastAssetSerialBatch(TransactionContext tc) { return tc.ExecuteReader("SELECT * FROM assetSerial WHERE AssetSerialID IN (SELECT MAX(AssetSerialID) FROM assetSerial)"); } internal static IDataReader GetLastAssetSerial(TransactionContext tc, int assetid) { return tc.ExecuteReader("SELECT * FROM assetSerial WHERE AssetSerialID IN (SELECT MAX(AssetSerialID) FROM assetSerial where assetId=%n)", assetid); } //internal static IDataReader GetAssignSerialsByEmployeeId(TransactionContext tc, int employeeId) //{ // return tc.ExecuteReader(@"SELECT * FROM assetSerial ast inner join Asset at on ast.assetId= at.assetID // WHERE at.EmployeeID=%n and ast.AssetStatus=%n", employeeId,(int)EnumAssetStatus.Assigned); //} internal static IDataReader GetAssetSerialPicker(TransactionContext tc, int assetid, int categoryid, EnumAssetStatus? status) { DataSet dSet = new DataSet(); string sql = string.Empty; if (assetid > 0) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("a.assetID = %n", assetid); } if (categoryid > 0) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("a.assetcategoryid = %n", categoryid); } if (status != null && status != EnumAssetStatus.None) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("asr.assetstatus = %n", (int)status); } string sqlQuery = SQLParser.MakeSQL(@"select asr.* from AssetSerial asr inner join asset a on a.assetID=asr.assetid %q", sql); Console.WriteLine(sqlQuery); return tc.ExecuteReader(sqlQuery); } internal static IDataReader GetReceivedAssetSerials(TransactionContext tc, DateTime? receiveDate, EnumAssetReceiverType? receiverType, int receiverId) { DataSet dSet = new DataSet(); string sql = string.Empty; //if (receiveDate != null) //{ // sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("CAST(l.ReceivedDate as DATE) = CAST(%d as Date)", receiveDate); //} if (receiverType != null) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("l.AssetReceiverType = %n", receiverType); } if (receiverId > 0) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("l.AssetReceiverID = %n", receiverId); } sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("l.AssetStatus = %n", EnumAssetStatus.Assigned); string sqlQuery = SQLParser.MakeSQL(@"SELECT *,a.Name AssetName FROM AssetSerial l Inner join Asset a on l.assetID=a.assetID %q", sql); return tc.ExecuteReader(sqlQuery); } internal static IDataReader GetRepairedAssetSerials(TransactionContext tc) { DataSet dSet = new DataSet(); string sql = string.Empty; sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("serial.AssetStatus = %n", EnumAssetStatus.Repaired); //string sqlQuery = SQLParser.MakeSQL(@"SELECT serial.*,v.Name VendorName,ast.tranDate RepairDate FROM assetserial serial // INNER JOIN assetserialtran ast ON serial.AssetSerialID=ast.SerialID AND trantype=%n // LEFT JOIN vendor v ON ast.VendorID=v.vendorID // %q order by ast.tranDate", EnumAssetTranType.Repaired, sql); string sqlQuery = SQLParser.MakeSQL(@";WITH cte AS ( SELECT MAX(AssetSerialTranId) AssetSerialTranId FROM assetserialtran ast WHERE ast.TranType=%n GROUP BY ast.SerialID ) SELECT serial.*,v.Name VendorName,ast.tranDate RepairDate FROM assetserial serial INNER JOIN assetserialtran ast ON serial.AssetSerialID=ast.SerialID INNER JOIN cte ON cte.AssetSerialTranId=ast.AssetSerialTranID LEFT JOIN vendor v ON ast.VendorID=v.vendorID %q ORDER BY ast.tranDate", EnumAssetTranType.Repaired, sql); return tc.ExecuteReader(sqlQuery); } internal static IDataReader GetAssignSerialsByEmployeeId(TransactionContext tc, EnumAssetReceiverType? receiverType, int receiverId) { DataSet dSet = new DataSet(); string sql = string.Empty; if (receiverType != null) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("ast.AssetReceiverType = %n", receiverType); } if (receiverId > 0) { sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("ast.AssetReceiverID = %n", receiverId); } sql = SQLParser.TagSQL(sql) + SQLParser.MakeSQL("ast.AssetStatus = %n", EnumAssetStatus.Assigned); string sqlQuery = SQLParser.MakeSQL(@"SELECT * FROM assetSerial ast inner join Asset at on ast.assetId= at.assetID %q", sql); return tc.ExecuteReader(sqlQuery); } #endregion #region Delete internal static void Delete(TransactionContext tc, int id) { tc.ExecuteNonQuery("DELETE FROM AssetSerial WHERE AssetSerialID=%n", id); } internal static DataSet GetFormData(TransactionContext tc, int serialId)//serialID { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { //string query = SQLParser.MakeSQL(@"SELECT emp.NAME AS Name, dsg.NAME AS Designation, dpt.DESCRIPTION AS Department, emct.PRESENTADDRESS AS Address, // emp.NATIONALID AS NIDPassportNo, emp.MOBILENO AS ContactNo, emp.EMAILADDRESS AS Email, emp.EMPLOYEENO AS BpID, // emct.PRESENTADDRESS AS JobLocation, vnd.Name AS ProductName, asr.SerialNo AS BpProductID, asr.AssignDate AS DurationDays, // asr.UniqueIndentifier AS SerialNumber FROM // AssetSerial AS asr // INNER JOIN // EMPLOYEE AS emp ON asr.AssetReceiverID =emp.EMPLOYEEID // INNER JOIN // Vendor AS vnd ON vnd.VendorID = asr.VendorID // INNER JOIN // DESIGNATION AS dsg ON dsg.DESIGNATIONID = emp.DESIGNATIONID // INNER JOIN // DEPARTMENT AS dpt ON dpt.DEPARTMENTID = emp.DEPARTMENTID // INNER JOIN // ASSET AS ast ON ast.assetID=asr.assetID // LEFT JOIN EMPCONTACT AS emct ON emct.EMPLOYEEID = emp.EMPLOYEEID // WHERE asr.assetSerialID=%n", serialId); string query = SQLParser.MakeSQL(@"SELECT distinct emp.NAME AS Name, dsg.NAME AS Designation, dpt.DESCRIPTION AS Department, emct.PRESENTADDRESS AS Address, emp.NATIONALID AS NIDPassportNo, emp.MOBILENO AS ContactNo, emp.EMAILADDRESS AS Email, emp.EMPLOYEENO AS BpID, -- emct.PRESENTADDRESS AS JobLocation loc.DESCRIPTION JobLocation,lm.NAME LineManager FROM AssetSerial AS asr INNER JOIN EMPLOYEE AS emp ON asr.AssetReceiverID =emp.EMPLOYEEID INNER JOIN Vendor AS vnd ON vnd.VendorID = asr.VendorID INNER JOIN DESIGNATION AS dsg ON dsg.DESIGNATIONID = emp.DESIGNATIONID INNER JOIN DEPARTMENT AS dpt ON dpt.DEPARTMENTID = emp.DEPARTMENTID INNER JOIN ASSET AS ast ON ast.assetID=asr.assetID LEFT JOIN EMPLOYEE AS LM ON lm.EMPLOYEEID =emp.LINEMANAGERID LEFT JOIN EMPCONTACT AS emct ON emct.EMPLOYEEID = emp.EMPLOYEEID LEFT JOIN LOCATION as loc on loc.LOCATIONID=emp.LOCATIONID WHERE asr.assetSerialID =%n", serialId); tempdataset = tc.ExecuteDataSet(query); tempdataset.Tables[0].TableName = "PayrollDataSet_AssetAcknowledgement"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetFormSerialData(TransactionContext tc, int employeeId)//serialID { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string query = SQLParser.MakeSQL(@"SELECT vnd.Name AS ProductName, asr.SerialNo AS BpProductID, 0 AS DurationDays, asr.UniqueIndentifier AS SerialNumber,ast.NAME Asset,emp.NAME,asr.AssignDate FROM AssetSerial AS asr INNER JOIN EMPLOYEE AS emp ON asr.AssetReceiverID =emp.EMPLOYEEID INNER JOIN Vendor AS vnd ON vnd.VendorID = asr.VendorID INNER JOIN ASSET AS ast ON ast.assetID=asr.assetID WHERE emp.EMPLOYEEID=%n", employeeId); tempdataset = tc.ExecuteDataSet(query); tempdataset.Tables[0].TableName = "PayrollDataset_AssetSerialInformation"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } #endregion } }