Mike Phares b1c6903c1c Tasks 184281, 184799, 184800, 184801 and 184802
Align .editorconfig files

Move Controller logic to DMO classes

GlobalVars.AppSettings = Models.AppSettings.GetFromConfigurationManager();

Question EditorConfig
Project level editorconfig
Format White Spaces
AppSetting when EnvironmentVariable not set
Corrective Actions Tests
Schedule Actions Tests
DMO Tests
Controller Tests

Get ready to use VSCode IDE
2024-12-04 11:58:13 -07:00

141 lines
5.5 KiB
C#

using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using Dapper;
using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
namespace Fab2ApprovalSystem.DMO;
public class PartsRequestDMO {
private readonly AppSettings _AppSettings;
private readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
public PartsRequestDMO(AppSettings appSettings) =>
_AppSettings = appSettings;
public IEnumerable<PartsRequestList> GetPartsRequestList() {
List<PartsRequestList> r = db.Query<PartsRequestList>("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<int>("@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<PartsRequest>("PartsRequestGet", parameters, commandType: CommandType.StoredProcedure).SingleOrDefault();
}
public IEnumerable<PartsRequestAttachmentList> GetAttachments(int prNumber) {
List<PartsRequestAttachmentList> attachments = db.Query<PartsRequestAttachmentList>(
"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<string>("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<ApprovalLogHistory> GetApprovalLogHistory(int prNumber) {
DynamicParameters parameters = new();
parameters.Add("@PRNumber", prNumber);
List<ApprovalLogHistory> approverList = db.Query<ApprovalLogHistory>("PartsRequestGetApprovalLogHistory", parameters, commandType: CommandType.StoredProcedure).ToList();
return approverList;
}
public IEnumerable<MyPartsRequestList> GetMyPartsRequests(int userID) {
DynamicParameters parameters = new();
parameters.Add("@UserID", userID);
IEnumerable<MyPartsRequestList> r = db.Query<MyPartsRequestList>("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);
}
public void AttachSave(int prNumber, int userId, string fullFileName, Stream stream) {
// Some browsers send file names with full path.
// We are only interested in the file name.
var fileName = Path.GetFileName(fullFileName);
string prFolderPath = _AppSettings.AttachmentFolder + "PartsRequest\\" + prNumber.ToString();
DirectoryInfo di = new(prFolderPath);
if (!di.Exists)
di.Create();
var physicalPath = Path.Combine(prFolderPath, fileName);
using (FileStream fileStream = new(physicalPath, FileMode.Create, FileAccess.Write)) {
stream.CopyTo(fileStream);
}
PartsRequestAttachment attach = new() {
PRNumber = prNumber,
FileName = fileName,
UserID = userId,
};
InsertAttachment(attach);
}
}