using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using Dapper; using Fab2ApprovalSystem.Misc; using Fab2ApprovalSystem.Models; namespace Fab2ApprovalSystem.DMO; public class PartsRequestDMO { private readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING); public IEnumerable GetPartsRequestList() { List r = db.Query("PartsRequestGetList", commandType: CommandType.StoredProcedure).ToList(); return r; } public void Insert(PartsRequest pr) { DynamicParameters parameters = new(); parameters.Add("@PRNumber", value: pr.PRNumber, dbType: DbType.Int32, direction: ParameterDirection.InputOutput); parameters.Add("@OriginatorID", pr.OriginatorID); db.Execute("PartsRequestInsert", parameters, commandType: CommandType.StoredProcedure); pr.PRNumber = parameters.Get("@PRNumber"); } public void Update(PartsRequest pr) { DynamicParameters parameters = new(); parameters.Add("@PRNumber", pr.PRNumber); parameters.Add("@Title", pr.Title); parameters.Add("@RequestorID", pr.RequestorID); parameters.Add("@TechLeadID", pr.TechLeadID); parameters.Add("@Description", pr.Description); db.Execute("PartsRequestUpdate", parameters, commandType: CommandType.StoredProcedure); } public PartsRequest Get(int PRNumber) { DynamicParameters parameters = new(); parameters.Add("@PRNumber", value: PRNumber, dbType: DbType.Int32); return db.Query("PartsRequestGet", parameters, commandType: CommandType.StoredProcedure).SingleOrDefault(); } public IEnumerable GetAttachments(int prNumber) { List attachments = db.Query( "SELECT AttachmentID, PRNumber, FileName, A.UserID, UploadDate, U.FirstName + ' ' + U.LastName AS FullName " + "FROM PartsRequestAttachment A " + "INNER JOIN Users U ON U.UserID = A.UserID " + "WHERE PRNumber = @PRNumber", new { PRNumber = prNumber }).ToList(); return attachments; } public void InsertAttachment(PartsRequestAttachment attach) { DynamicParameters parameters = new(); parameters.Add("@PRNumber", attach.PRNumber); parameters.Add("@UserID", attach.UserID); parameters.Add("@FileName", attach.FileName); db.Execute("PartsRequestInsertAttachment", parameters, commandType: CommandType.StoredProcedure); } public string GetFileName(string attachmentID) { DynamicParameters parameters = new(); parameters.Add("@AttachmentID", attachmentID); var fileName = db.Query("PartsRequestGetAttachmentFileName", parameters, commandType: CommandType.StoredProcedure).Single(); return fileName; } public void DeleteAttachment(int attachmentID) { DynamicParameters parameters = new(); parameters.Add("@AttachmentID", attachmentID); db.Execute("PartsRequestDeleteAttachment", parameters, commandType: CommandType.StoredProcedure); } public void Submit(int prNumber, int userID) { DynamicParameters parameters = new(); parameters.Add("@PRNumber", prNumber); parameters.Add("@UserID", userID); db.Execute("PartsRequestSubmitForApproval", parameters, commandType: CommandType.StoredProcedure); } public IEnumerable GetApprovalLogHistory(int prNumber) { DynamicParameters parameters = new(); parameters.Add("@PRNumber", prNumber); List approverList = db.Query("PartsRequestGetApprovalLogHistory", parameters, commandType: CommandType.StoredProcedure).ToList(); return approverList; } public IEnumerable GetMyPartsRequests(int userID) { DynamicParameters parameters = new(); parameters.Add("@UserID", userID); IEnumerable r = db.Query("PartsRequestGetListByUser", parameters, commandType: CommandType.StoredProcedure); return r.ToList(); } public void DeleteDocument(int prNumber, int userid) { DynamicParameters parameters = new(); parameters.Add("@UserID", userid); parameters.Add("@PRNumber", prNumber); db.Execute("PartsRequestDelete", parameters, commandType: CommandType.StoredProcedure); } }