_Partial View
===========================================================================================================
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css" />
<script src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<div class="form-group row">
<Label class="control-label col-sm-2 text-left" for="FacilityNo">Description:</Label>
<div class="col-md-3">
@Html.EditorFor(model => model.DocDesc, new { htmlAttributes = new { @class = "form-control", @title = "First Name" } })
</div>
</div>
<div class="form-group row">
<Label class="control-label col-sm-2 text-left" for="FacilityNo">File</Label>
<div class="col-md-3">
<input class="input-file" type="file" size="50" asp-for="@Model.formFile" />
</div>
</div>
<div class="form-group row">
<div class="col-md-3">
<a id="btnUpload" class="btn btn-primary" title="Upload Documents">Upload</a>
</div>
</div>
<div>
<div id="ResultsGrid" class="dvIssues">
<div class="table-responsive" style="width:100%;">
<table id="topicTable" cellpadding="0" cellspacing="0" class="table table-bordered table-condensed">
<thead>
<tr>
<th>Document Desc</th>
<th>Uploaded By</th>
<th>Uploaded Date</th>
<th>Actions</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
<div id="divPopupMessage" class="modal" role="dialog" data-keyboard="false" data-backdrop="static" aria-labelledby="divPopupMessageLabel">
<div id="messagepopup" class="modal-dialog modal-dialog-centered">
<div class="modal-content panel-warning">
<div class="modal-header">
<label id="H3" class="modal-title labelh3" title="Upload Error">Upload Message</label>
</div>
<div class="modal-body">
<div class="row container-fluid" title="Upload Message">
<p id="lblSessionMessage">
<span id="errmessage"></span>
<br />
</p>
</div>
<div id="Div4" class="row container-fluid">
<div class="col-md-1"></div>
<div class="col-md-11">
<span class="pull-right">
<button id="btnOk" type="button" data-dismiss="modal" class="btn btn-warning" onclick="ClosePopUp()">OK</button>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="loading" style="margin: 0px; padding: 0px; position: fixed; right: 0px;
top: 0px; width: 100%; height: 100%; background-color: #666666; z-index: 30001;
opacity: .8; filter: alpha(opacity=70);display:none;color:white;">
<p style="position: absolute; top: 30%; left: 45%; color: White;">
Loading, please wait...
</p>
</div>
<script>
var $loading = $('#loading').hide();
let cqiTopics = [];
var fileData = new FormData();
var oTable;
function bindDatatable() {
oTable = $('#dtIssues').DataTable(
{
"drawCallback": function() {
$('.paginate_button').each(function() {
var text = $(this).text(),
title = isNaN(text) ? 'Search Page ' + text + ' Page' : 'Search Page ' + text;
$(this).attr('title', title);
});
},
"oLanguage": {
"sLengthMenu": 'Display <select title="Display records per page">' +
'<option value="10">10</option>' +
'<option value="25">25</option>' +
'</select> records',
"oAria": {
"sSortAscending": " - click/return to sort ascending",
"sSortDescending": " - click/return to sort descending"
}
},
"bStateSave": false,
"searching": true,
"bServerSide": true,
"sAjaxSource": "@Url.Action("SearchDocumentResult", "Message")",
"bProcessing": true,
"language": {
"emptyTable": "No record found.",
"processing":
'<i class="fa fa-spinner fa-spin fa-3x fa-fw" style="color:#2a2b2b;"></i><span class="sr-only">Loading...</span> '
},
"order": [1, "desc"],
"columnDefs": [
{
"title": "",
"targets": [0],
"width": "0%",
"mRender": function(data, type, full) {
debugger;
return '<a href=' + '@Url.Action("Download", "Message")/' + full[1] +
'>View</a> <a href=' + '@Url.Action("DeleteDoc", "Message")/' + full[1] +
'>Delete</a>'
}
},
{
"title": "Document Id",
"targets": [1],
"width": "0%",
},
{
"title": "Description",
"targets": [2],
"width": "0%",
},
{
"title": "Created By",
"targets": [3],
"width": "0%",
},
{
"title": "Date",
"targets": [4],
"width": "0%",
}
]
});
$("#btnSearch").on("click", function() {
oTable.search('', $("#FirstName").val() + ','
+ $("#LastName").val() + ','
+ $("#Role Option:selected").text() + ','
+ $("#CqiLevel Option:selected").text() + ','
+ $("#Region Option:selected").text() + ','
+ $("#County Option:selected").text() + ','
+ $("#Team Option:selected").text() + ',' + "" + ',' + "").draw();
});
}
$(document).ready(function() {
$("#DocuTable tbody tr:odd").css("background-color", "#f9f9f9");
$("#DocuTable tbody tr:even").css("background-color", "#fff");
ClosePopUp();
chkAttachDiv();
$('#topicTable').hide();
$("#btnUpload").click(function() {
debugger;
var boolsize = false;
var upldFile = $('#formFile').val();
var selectedDocDesc = $("#DocDesc").val();
if ($.trim(upldFile).length == 0) {
DialogOpen('nofile');
return false;
}
var splitFileName = upldFile.toLowerCase().split('\\').pop();
var stringFileNameSplit = splitFileName.split('.').length;
if (stringFileNameSplit > 1) {
if (splitFileName.split('.').pop().indexOf("jp") == -1 && splitFileName.split('.').pop().indexOf("gif") == -1 && splitFileName.split('.').pop().indexOf("tiff") == -1 && splitFileName.split('.').pop().indexOf("pdf") == -1 && splitFileName.split('.').pop().indexOf("bmp") == -1 && splitFileName.split('.').pop().indexOf("png") == -1 && splitFileName.split('.').pop().indexOf("doc") == -1) {
DialogOpen('filetype');
return false;
}
}
else {
DialogOpen('filetype');
return false;
}
var files = $("#formFile").get(0).files;
for (var i = 0; i < files.length; i++) {
if (files[i].size > 2 * 1024 * 1024) {
boolsize = true;
break;
}
}
if (boolsize) {
DialogOpen('size');
return false;
}
$('#loading').show();
fileData.append('file', $('#formFile')[0].files[0]);
fileData.append('docid', $("#DocDesc").val());
var docarray = [];
fileData.append('desc', $("#DocDesc").val());
fileData.append('doctype', "");
$.ajax({
type: "POST",
url: "@Url.Action("DocuUpload", "Message")",
dataType: "json",
contentType: false,
processData: false,
data: fileData,
success: function(result, status, xhr) {
debugger;
$('#topicTable').show();
var cqiTopicObj = new Object();
var table = document.getElementById("topicTable");
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
row.id = cqiTopics.length;
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
cell1.innerHTML = result.docDesc;
cqiTopicObj.DocDesc = result.docDesc;
cell2.innerHTML = result.createdBy;
cqiTopicObj.CreatedBy = result.createdBy;
cell3.innerHTML =result.createdDt;
cqiTopicObj.CreatedDt = result.createdDt;
cell4.innerHTML = '<button type="button" id="btnDelete" class="btn btn-primary" onclick="deleteCQITopic(' + cqiTopics.length + ')">Delete</button> ' + '<button type="button" class="btn btn-primary" onclick="viewCQITopic(' + cqiTopics.length + ')">View</button>';
cqiTopicObj.DmsGuid = result.dmsGuid;
cqiTopics.push(cqiTopicObj);
$('#loading').hide();
},
error: function(xhr, status, error) {
DialogOpen('dms');
console.log('Failed to Upload DMS Document.');
},
complete: function() {
$('#loading').hide();
$('#formFile').val('');
$("#txtSelectedDoc").val('0');
$('#txtDocDesc').val('');
$('#txtSelectDesc').val('');
}
});
$("tbody tr:odd").css("background-color", "#eee");
$("tbody tr:even").css("background-color", "#ddd");
});
});
function deleteCQITopic(rowIndex) {
var index, table = document.getElementById('topicTable');
for (var i = 1; i < table.rows.length; i++) {
var attrIndex = table.rows[i].id;
if (attrIndex == rowIndex) {
var c = confirm("Do you want to delete this row ?");
if (c === true) {
table.deleteRow(i);
}
if (table.rows.length === 1) {
table.style.display = "none";
}
}
}
return false;
}
function viewCQITopic(index) {
var dmsId= cqiTopics[index].DmsGuid
var link = '@Html.Raw(@Url.Action("Download", "Message", new { docId= -1000000000 , docdesc= -2000000000}))';
link = link.replace("-1000000000", dmsId);
window.location = link;
};
function chkAttachDiv() {
$("#txtDocDesc").val('');
$("#uploadFile").val('');
$('#ManualDescription').hide();
if ($('#dvUplCtrlGrd tr').length > 1) {
$('#dvUplCtrlGrd').show();
}
else
$('#dvUplCtrlGrd').hide();
if ($('#dvUplCtrlGrd tr').length < 6)
$('#dvUplCtrl').show();
else
$('#dvUplCtrl').hide();
}
function ClosePopUp() {
$("#divPopupMessage").hide();
$('#loading').hide();
$('#formFile').val('');
$("#txtSelectedDoc").val('0');
$('#txtDocDesc').val('');
$("#errmessage").text('');
$('#txtSelectDesc').val('');
$('#ManualDescription').hide();
}
function DialogOpen(message) {
if (message == "nodoctype") { $('#errmessage').text('Please select the document type'); }
if (message == "nofile") { $('#errmessage').text('Please select the document to upload'); }
if (message == "nodocdesc") { $('#errmessage').text('Please enter the miscellaneous document description'); }
if (message == "filetype") { $('#errmessage').text('Please upload document in the right format, the allowed formats are .JPEG, .GIF, .TIFF, .PDF, .BMP, .PNG, .DOCX'); }
if (message == "size") { $('#errmessage').text('Please upload document of size less than 2 MB'); }
if (message == "dms") {
$('#errmessage').text('The system has encountered an error uploading your document in DMS.');
}
$("#divPopupMessage").show();
}
$(document).on("click", ".action-View", function(e) {
e.preventDefault();
var docId = $(this).closest('tr').attr('id');
var docdesc = $(this).closest('tr').find("td:eq(0)").text();
var link = '@Html.Raw(@Url.Action("Download", "Application", new { docId= -1000000000 , docdesc= -2000000000}))';
link = link.replace("-1000000000", docId);
link = link.replace("-2000000000", docdesc);
window.location = link;
});
</script>
<style>
.modal-dialog {
width: 550px;
}
</style>
Controller
=====================================================================================
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Delete(int id, IFormCollection collection)
{
try
{
return RedirectToAction(nameof(Index));
}
catch
{
return View();
}
}
public ActionResult DocuUpload()
{
Guid DmsId = new Guid();
try
{
var files = Request.Form.Files;
var file = files[files.Count - 1];
var extn = Path.GetExtension(file.FileName);
var array = Convert.ToString(HttpContext.Request.Form["desc"]).Split(',');
var desc = array[array.Count() - 1];
using (var stream = new MemoryStream())
{
file.CopyTo(stream);
DMSHelper obj = new DMSHelper();
DmsId = obj.UploadDocument(stream, "Messages", "HANDSLIC", file.ContentType, "HANDS", extn);
Console.WriteLine(DmsId);
}
return Json(new DocumentDetails()
{
CreatedBy = "Vamshi",
CreatedDt = DateTime.Now.ToShortDateString(),
DmsGuid = Convert.ToString(DmsId),
DocDesc = desc
});
}
catch (Exception ex)
{
throw ex;
}
finally
{
}
}
public FileResult Download(string docId)
{
Guid dmsId = new Guid(docId);
byte[] returnBytes = new byte[10000000];
string docType = string.Empty;
try
{
DMSHelper obj = new DMSHelper();
var result = obj.GetDocument(dmsId);
returnBytes = result.Item1;
docType = result.Item2;
}
catch (Exception ex)
{
throw ex;
}
finally
{
}
return File(returnBytes, "application/pdf", string.Format("DMSDoc-{0}.{1}", 1, docType));
}
public FileResult DeleteDoc(int Id)
{
Guid docId = new Guid();
byte[] returnBytes = new byte[10000000];
string docType = string.Empty;
try
{
DMSHelper obj = new DMSHelper();
var result = obj.GetDocument(docId);
returnBytes = result.Item1;
docType = result.Item2;
}
catch (Exception ex)
{
throw ex;
}
finally
{
}
return File(returnBytes, "application/pdf", string.Format("DMSDoc-{0}.{1}", 1, "pdf"));
}
=======================================================================================================
{
public class DMSHelper
{
public Guid UploadDocument(MemoryStream stream, string docType, string LicenseNumber, string fileContentType, string applicationType, string extn)
{
Guid DmsId = new Guid();
try
{
byte[] docCon = ReadToEnd(stream);
EndpointAddress endPointAddress = new EndpointAddress("service");
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.MaxReceivedMessageSize = 2147483647;
basicHttpBinding.MaxBufferPoolSize = 2147483647;
basicHttpBinding.MaxBufferSize = 2147483647;
basicHttpBinding.ReaderQuotas.MaxDepth = 2147483647;
basicHttpBinding.ReaderQuotas.MaxBytesPerRead = 2147483647;
basicHttpBinding.ReaderQuotas.MaxStringContentLength = 2147483647;
basicHttpBinding.ReaderQuotas.MaxArrayLength = 2147483647;
basicHttpBinding.ReaderQuotas.MaxNameTableCharCount = 2147483647;
basicHttpBinding.TransferMode = TransferMode.Buffered;
basicHttpBinding.BypassProxyOnLocal = false;
basicHttpBinding.AllowCookies = false;
basicHttpBinding.UseDefaultWebProxy = true;
basicHttpBinding.MessageEncoding = WSMessageEncoding.Mtom;
basicHttpBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
basicHttpBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
var client = new DMSClient(basicHttpBinding, endPointAddress);
X509Certificate2 myCertificate = GetCertificate("test");
client.ClientCredentials.ClientCertificate.Certificate = myCertificate;
var metaData = new Dictionary<string, object>();
Stream fileContent = new MemoryStream(docCon);
string clientDocumentId = "MITSApplicationDocId";
string contentType = "MITS";
var expirationDate = DateTime.Now.AddYears(100);
var fileExtension = extn;
var mime = fileContentType;
var requestedBy = "MITS.APP";
var securityContext = 0;
var docUpload = new DocumentUpload(clientDocumentId, contentType, expirationDate, fileExtension, metaData, mime, requestedBy, securityContext, fileContent);
var Id = client.UploadDocument(docUpload);
DmsId = Id.Id;
}
catch (Exception ex)
{
throw;
}
finally
{
}
return DmsId;
}
public Tuple<byte[], string, string> GetDocument(Guid documentId)
{
try
{
EndpointAddress endPointAddress = new EndpointAddress("");
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.MaxReceivedMessageSize = 2147483647;
basicHttpBinding.MaxBufferPoolSize = 2147483647;
basicHttpBinding.MaxBufferSize = 2147483647;
basicHttpBinding.ReaderQuotas.MaxDepth = 2147483647;
basicHttpBinding.ReaderQuotas.MaxBytesPerRead = 2147483647;
basicHttpBinding.ReaderQuotas.MaxStringContentLength = 2147483647;
basicHttpBinding.ReaderQuotas.MaxArrayLength = 2147483647;
basicHttpBinding.ReaderQuotas.MaxNameTableCharCount = 2147483647;
basicHttpBinding.TransferMode = TransferMode.Buffered;
basicHttpBinding.BypassProxyOnLocal = false;
basicHttpBinding.AllowCookies = false;
basicHttpBinding.UseDefaultWebProxy = true;
basicHttpBinding.MessageEncoding = WSMessageEncoding.Mtom;
basicHttpBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
basicHttpBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
var client = new DMSClient(basicHttpBinding, endPointAddress);
X509Certificate2 myCertificate = GetCertificate("DMSTest.MITSDev");
// client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.PeerTrust;
client.ClientCredentials.ClientCertificate.Certificate = myCertificate;
DocumentDownloadRequest obj = new DocumentDownloadRequest();
obj.DMSDocumentId = documentId;
obj.RequestedBy = "MITS.APP";
DocumentDownload doc = new DocumentDownload();
doc = client.GetDocument(obj);
byte[] returnBytes = ReadToEnd(doc.FileContents);
string docType = doc.FileExtension;
string mimeType = doc.MimeType;
return new Tuple<byte[], string, string>(returnBytes, docType, mimeType);
}
catch (Exception ex)
{
throw;
}
}
public bool DeleteDocument(Guid documentId)
{
bool result = false;
try
{
EndpointAddress endPointAddress = new EndpointAddress("");
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.MaxReceivedMessageSize = 2147483647;
basicHttpBinding.MaxBufferPoolSize = 2147483647;
basicHttpBinding.MaxBufferSize = 2147483647;
basicHttpBinding.ReaderQuotas.MaxDepth = 2147483647;
basicHttpBinding.ReaderQuotas.MaxBytesPerRead = 2147483647;
basicHttpBinding.ReaderQuotas.MaxStringContentLength = 2147483647;
basicHttpBinding.ReaderQuotas.MaxArrayLength = 2147483647;
basicHttpBinding.ReaderQuotas.MaxNameTableCharCount = 2147483647;
basicHttpBinding.TransferMode = TransferMode.Buffered;
basicHttpBinding.BypassProxyOnLocal = false;
basicHttpBinding.AllowCookies = false;
basicHttpBinding.UseDefaultWebProxy = true;
basicHttpBinding.MessageEncoding = WSMessageEncoding.Mtom;
basicHttpBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
basicHttpBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
var client = new DMSClient(basicHttpBinding, endPointAddress);
X509Certificate2 myCertificate = GetCertificate("DMSTest.MITSDev");
client.ClientCredentials.ClientCertificate.Certificate = myCertificate;
DocumentDelete obj = new DocumentDelete();
obj.DMSDocumentId = documentId;
obj.RequestedBy = "MITS.APP";
var output = client.DeleteDocumentAsync(obj);
result = output.Result.Success;
}
catch (Exception ex)
{
result = false;
}
finally
{
}
return result;
}
public static X509Certificate2 GetCertificate(string CertName)
{
X509Store userCaStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
try
{
userCaStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certificatesInStore = userCaStore.Certificates;
X509Certificate2Collection findResult = certificatesInStore.Find(X509FindType.FindBySubjectName, CertName, true);
X509Certificate2 clientCertificate = null;
if (findResult.Count == 1)
{
clientCertificate = findResult[0];
}
else
{
throw new Exception("Unable to locate the correct client certificate.");
}
return clientCertificate;
}
catch (Exception ex)
{
throw ex;
}
}
public byte[] ReadToEnd(Stream stream)
{
long originalPosition = 0;
if (stream.CanSeek)
{
originalPosition = stream.Position;
stream.Position = 0;
}
try
{
byte[] readBuffer = new byte[4096];
int totalBytesRead = 0;
int bytesRead;
while ((bytesRead = stream.Read(readBuffer, totalBytesRead, readBuffer.Length - totalBytesRead)) > 0)
{
totalBytesRead += bytesRead;
if (totalBytesRead == readBuffer.Length)
{
int nextByte = stream.ReadByte();
if (nextByte != -1)
{
byte[] temp = new byte[readBuffer.Length * 2];
Buffer.BlockCopy(readBuffer, 0, temp, 0, readBuffer.Length);
Buffer.SetByte(temp, totalBytesRead, (byte)nextByte);
readBuffer = temp;
totalBytesRead++;
}
}
}
byte[] buffer = readBuffer;
if (readBuffer.Length != totalBytesRead)
{
buffer = new byte[totalBytesRead];
Buffer.BlockCopy(readBuffer, 0, buffer, 0, totalBytesRead);
}
return buffer;
}
finally
{
if (stream.CanSeek)
{
stream.Position = originalPosition;
}
}
}
}
}
=========================================================================================================
{
public partial class CQIContext : DbContext
{
public CQIContext()
{
}
public CQIContext(DbContextOptions<CQIContext> options)
: base(options)
{
}
public virtual DbSet<CqiDocument> CqiDocuments { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.
optionsBuilder.UseSqlServer("Database=CQI;Data Source=HFS1VD-SQXX002,1961;Integrated Security=SSPI;Connect Timeout=10000;User Id = eas\\\\\\\\e-vamshi.jakkula;Password=*****;");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasAnnotation("Relational:Collation", "SQL_Latin1_General_CP1_CI_AS");
modelBuilder.Entity<CqiActionPlan>(entity =>
{
entity.HasKey(e => e.IdActionPlan);
entity.ToTable("cqiActionPlans");
entity.Property(e => e.IdActionPlan).HasColumnName("idActionPlan");
entity.Property(e => e.DteLastMod)
.HasColumnType("datetime")
.HasColumnName("dteLastMod");
entity.Property(e => e.DteTarget)
.HasColumnType("datetime")
.HasColumnName("dteTarget");
entity.Property(e => e.IdIssue).HasColumnName("idIssue");
entity.Property(e => e.IntActionNumber).HasColumnName("intActionNumber");
entity.Property(e => e.TxtLastModBy)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtLastModBy");
entity.Property(e => e.TxtPersonResponsible)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtPersonResponsible");
entity.Property(e => e.TxtStepsTaken)
.HasMaxLength(3000)
.IsUnicode(false)
.HasColumnName("txtStepsTaken");
entity.Property(e => e.TxtUpdates)
.HasMaxLength(3000)
.IsUnicode(false)
.HasColumnName("txtUpdates");
});
modelBuilder.Entity<CqiBranch>(entity =>
{
entity.HasKey(e => e.IdBranch)
.HasName("PK_cqiBranch");
entity.ToTable("cqiBranchs");
entity.Property(e => e.IdBranch).HasColumnName("idBranch");
entity.Property(e => e.IdDivision).HasColumnName("idDivision");
entity.Property(e => e.Lastmodon)
.HasColumnType("datetime")
.HasColumnName("lastmodon")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.TxtBranch)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtBranch");
entity.Property(e => e.Txtlastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtlastmodby");
});
modelBuilder.Entity<CqiBuildComment>(entity =>
{
entity.HasKey(e => e.IdBuild);
entity.ToTable("cqiBuildComments");
entity.Property(e => e.IdBuild).HasColumnName("idBuild");
entity.Property(e => e.BuildComment)
.HasMaxLength(1000)
.IsUnicode(false);
entity.Property(e => e.BuildNumber)
.HasMaxLength(10)
.IsUnicode(false);
entity.Property(e => e.BuildPage)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.BuildPriority)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.BuildResponse)
.HasMaxLength(1000)
.IsUnicode(false);
entity.Property(e => e.BuildUser)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.DteComment)
.HasColumnType("datetime")
.HasColumnName("dteComment");
entity.Property(e => e.Lastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("lastmodby");
entity.Property(e => e.Lastmodon)
.HasColumnType("datetime")
.HasColumnName("lastmodon")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.Resolved)
.HasMaxLength(1)
.IsUnicode(false)
.HasDefaultValueSql("('N')")
.IsFixedLength(true);
});
modelBuilder.Entity<CqiBuildPage>(entity =>
{
entity.HasKey(e => e.IdPage);
entity.ToTable("cqiBuildPages");
entity.Property(e => e.IdPage).HasColumnName("idPage");
entity.Property(e => e.Cqipage)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("CQIPage");
});
modelBuilder.Entity<CqiCategory>(entity =>
{
entity.HasKey(e => e.IdCategory);
entity.ToTable("cqiCategories");
entity.Property(e => e.IdCategory).HasColumnName("idCategory");
entity.Property(e => e.DteLastMod)
.HasColumnType("datetime")
.HasColumnName("dteLastMod")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.TxtCategory)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtCategory");
entity.Property(e => e.Txtlastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtlastmodby");
});
modelBuilder.Entity<CqiCounty>(entity =>
{
entity.HasKey(e => e.IdCounty);
entity.ToTable("cqiCounties");
entity.Property(e => e.IdCounty).HasColumnName("idCounty");
entity.Property(e => e.Idregion).HasColumnName("IDREGION");
entity.Property(e => e.Lastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("LASTMODBY");
entity.Property(e => e.Lastmodon)
.HasColumnType("datetime")
.HasColumnName("LASTMODON")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.TxtCounty)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtCounty");
});
modelBuilder.Entity<CqiDepartment>(entity =>
{
entity.HasKey(e => e.IdDepartment);
entity.ToTable("cqiDepartments");
entity.Property(e => e.IdDepartment).HasColumnName("idDepartment");
entity.Property(e => e.Lastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("lastmodby");
entity.Property(e => e.Lastmodon)
.HasColumnType("datetime")
.HasColumnName("lastmodon")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.TxtDepartment)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtDepartment");
});
modelBuilder.Entity<CqiDivision>(entity =>
{
entity.HasKey(e => e.IdDivision);
entity.ToTable("cqiDivisions");
entity.Property(e => e.IdDivision).HasColumnName("idDivision");
entity.Property(e => e.Dtelastmod)
.HasColumnType("datetime")
.HasColumnName("dtelastmod")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.TxtDivision)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtDivision");
entity.Property(e => e.Txtlastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtlastmodby");
});
modelBuilder.Entity<CqiDocument>(entity =>
{
entity.HasKey(e=>e.DocumentId);
entity.ToTable("cqiDocuments");
entity.Property(e => e.AppType)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.CreatedBy)
.HasMaxLength(200)
.IsUnicode(false)
.HasDefaultValueSql("('ADMIN')");
entity.Property(e => e.CreatedDate)
.HasColumnType("datetime")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.DmsGuid)
.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);
entity.Property(e => e.DocDesc)
.HasMaxLength(300)
.IsUnicode(false);
entity.Property(e => e.DocType)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.DocumentId).ValueGeneratedOnAdd();
entity.Property(e => e.ExpirationDate).HasColumnType("datetime");
entity.Property(e => e.FileExtension)
.HasMaxLength(20)
.IsUnicode(false);
entity.Property(e => e.ModifiedBy)
.HasMaxLength(200)
.IsUnicode(false)
.HasDefaultValueSql("('ADMIN')");
entity.Property(e => e.ModifiedDate)
.HasColumnType("datetime")
.HasDefaultValueSql("(getdate())");
});
modelBuilder.Entity<CqiError>(entity =>
{
entity.HasKey(e => e.ErrorId);
entity.ToTable("cqiError");
entity.Property(e => e.ErrorId).HasColumnName("ErrorID");
entity.Property(e => e.ErrorDate)
.HasColumnType("datetime")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.ErrorMessage)
.HasMaxLength(4000)
.IsUnicode(false);
entity.Property(e => e.ErrorOccurred)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.ErrorUser)
.HasMaxLength(50)
.IsUnicode(false);
});
modelBuilder.Entity<CqiFaq>(entity =>
{
entity.HasKey(e => e.IdFaq);
entity.ToTable("cqiFAQ");
entity.HasIndex(e => e.DteAdded, "IX_cqiFAQDateAdded");
entity.Property(e => e.IdFaq).HasColumnName("idFAQ");
entity.Property(e => e.Active)
.HasMaxLength(1)
.IsUnicode(false)
.IsFixedLength(true);
entity.Property(e => e.DteAdded)
.HasColumnType("datetime")
.HasColumnName("dteAdded")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.DteLastMod)
.HasColumnType("datetime")
.HasColumnName("dteLastMod")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.Question).HasMaxLength(100);
entity.Property(e => e.TxtAddedBy)
.HasMaxLength(50)
.HasColumnName("txtAddedBy");
entity.Property(e => e.Txtlastmodby)
.HasMaxLength(50)
.HasColumnName("txtlastmodby");
});
modelBuilder.Entity<CqiIssue>(entity =>
{
entity.HasKey(e => e.IdIssue);
entity.ToTable("cqiIssues");
entity.Property(e => e.IdIssue).HasColumnName("idIssue");
entity.Property(e => e.C1Completed)
.HasMaxLength(1)
.IsUnicode(false)
.HasColumnName("c1Completed")
.HasDefaultValueSql("('N')")
.IsFixedLength(true);
entity.Property(e => e.C1Confidential)
.HasMaxLength(1)
.IsUnicode(false)
.HasColumnName("c1Confidential")
.HasDefaultValueSql("('N')")
.IsFixedLength(true);
entity.Property(e => e.C1Resolved)
.HasMaxLength(1)
.IsUnicode(false)
.HasColumnName("c1Resolved")
.HasDefaultValueSql("('N')")
.IsFixedLength(true);
entity.Property(e => e.DteIssueAdded)
.HasColumnType("datetime")
.HasColumnName("dteIssueAdded")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.DteIssueLastMod)
.HasColumnType("datetime")
.HasColumnName("dteIssueLastMod")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.IdMinutes).HasColumnName("idMinutes");
entity.Property(e => e.TxtAssignedTo)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtAssignedTo");
entity.Property(e => e.TxtCategory)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtCategory");
entity.Property(e => e.TxtCurrentLevel)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtCurrentLevel");
entity.Property(e => e.TxtIssueAddedBy)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtIssueAddedBy");
entity.Property(e => e.TxtIssueDesc)
.HasMaxLength(3000)
.IsUnicode(false)
.HasColumnName("txtIssueDesc");
entity.Property(e => e.TxtIssueLastModBy)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtIssueLastModBy");
entity.Property(e => e.TxtIssueSubject)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtIssueSubject");
entity.Property(e => e.TxtOriginalLevel)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtOriginalLevel");
entity.Property(e => e.TxtStatus)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtStatus");
entity.Property(e => e.TxtTopic)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtTopic");
});
modelBuilder.Entity<CqiIssueAction>(entity =>
{
entity.HasKey(e => e.IdAction);
entity.ToTable("cqiIssueActions");
entity.Property(e => e.IdAction).HasColumnName("idAction");
entity.Property(e => e.ActionBy)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.ActionNotes)
.HasMaxLength(3000)
.IsUnicode(false);
entity.Property(e => e.C1Completed)
.HasMaxLength(1)
.IsUnicode(false)
.HasColumnName("c1Completed")
.HasDefaultValueSql("('N')")
.IsFixedLength(true)
.HasComment("Is Issue Competed at this level");
entity.Property(e => e.DteIssueAction)
.HasColumnType("datetime")
.HasColumnName("dteIssueAction");
entity.Property(e => e.IdIssue).HasColumnName("idIssue");
entity.Property(e => e.IdMinutes).HasColumnName("idMinutes");
entity.Property(e => e.IssueAction)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.IssueSubject)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.NextLevel)
.HasMaxLength(50)
.IsUnicode(false);
});
modelBuilder.Entity<CqiLevel>(entity =>
{
entity.HasKey(e => e.IdLevel);
entity.ToTable("cqiLevels");
entity.Property(e => e.IdLevel).HasColumnName("idLevel");
entity.Property(e => e.Dtelastmod)
.HasColumnType("datetime")
.HasColumnName("dtelastmod")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.TxtLevel)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtLevel");
entity.Property(e => e.Txtlastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtlastmodby");
});
modelBuilder.Entity<CqiMinute>(entity =>
{
entity.HasKey(e => e.IdMinutes);
entity.ToTable("cqiMinutes");
entity.Property(e => e.IdMinutes).HasColumnName("idMinutes");
entity.Property(e => e.C1MinutesApproved)
.HasMaxLength(1)
.IsUnicode(false)
.HasColumnName("c1MinutesApproved")
.HasDefaultValueSql("('N')")
.IsFixedLength(true);
entity.Property(e => e.C1MinutesComplete)
.HasMaxLength(1)
.IsUnicode(false)
.HasColumnName("c1MinutesComplete")
.IsFixedLength(true);
entity.Property(e => e.C1ReviewPrevMinutes)
.HasMaxLength(1)
.IsUnicode(false)
.HasColumnName("c1ReviewPrevMinutes")
.HasDefaultValueSql("('N')")
.IsFixedLength(true);
entity.Property(e => e.DteMeeting)
.HasColumnType("datetime")
.HasColumnName("dteMeeting");
entity.Property(e => e.DteMinutesAddedon)
.HasColumnType("datetime")
.HasColumnName("dteMinutesAddedon")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.DteMinutesModified)
.HasColumnType("datetime")
.HasColumnName("dteMinutesModified")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.IntNumofCaseReviews).HasColumnName("intNumofCaseReviews");
entity.Property(e => e.IntNumofPpcasereviews).HasColumnName("intNumofPPCasereviews");
entity.Property(e => e.TxtBranch)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtBranch");
entity.Property(e => e.TxtCaseReview)
.HasMaxLength(3000)
.IsUnicode(false)
.HasColumnName("txtCaseReview");
entity.Property(e => e.TxtCounty)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtCounty");
entity.Property(e => e.TxtDepartment)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtDepartment");
entity.Property(e => e.TxtDivision)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtDivision");
entity.Property(e => e.TxtEmployeeRecognition)
.HasMaxLength(3000)
.IsUnicode(false)
.HasColumnName("txtEmployeeRecognition");
entity.Property(e => e.TxtFacilitator)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtFacilitator");
entity.Property(e => e.TxtLevel)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtLevel");
entity.Property(e => e.TxtMeetingDesc)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtMeetingDesc");
entity.Property(e => e.TxtMgtReports)
.HasMaxLength(3000)
.IsUnicode(false)
.HasColumnName("txtMgtReports");
entity.Property(e => e.TxtOtherAttendees)
.HasMaxLength(3000)
.IsUnicode(false)
.HasColumnName("txtOtherAttendees");
entity.Property(e => e.TxtPartners)
.HasMaxLength(3000)
.IsUnicode(false)
.HasColumnName("txtPartners");
entity.Property(e => e.TxtRegion)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtRegion");
entity.Property(e => e.TxtReviewPrevMinComments)
.HasMaxLength(3000)
.IsUnicode(false)
.HasColumnName("txtReviewPrevMinComments");
entity.Property(e => e.TxtScribe)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtScribe");
entity.Property(e => e.TxtScribeAddedBy)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtScribeAddedBy");
entity.Property(e => e.TxtScribeLastModBy)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtScribeLastModBy")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.TxtServiceComplaints)
.HasMaxLength(3000)
.IsUnicode(false)
.HasColumnName("txtServiceComplaints");
entity.Property(e => e.TxtTeam)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtTeam");
entity.Property(e => e.TxtWorkplaceSafety)
.HasMaxLength(3000)
.IsUnicode(false)
.HasColumnName("txtWorkplaceSafety");
});
modelBuilder.Entity<CqiMinutesAttendance>(entity =>
{
entity.HasKey(e => e.IdMinutesAttendance);
entity.ToTable("cqiMinutesAttendance");
entity.HasIndex(e => e.TxtEmail, "IX_cqiMinutesAttendance")
.HasFillFactor((byte)90);
entity.Property(e => e.IdMinutesAttendance).HasColumnName("idMinutesAttendance");
entity.Property(e => e.IdMinutes).HasColumnName("idMinutes");
entity.Property(e => e.Lastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("LASTMODBY");
entity.Property(e => e.Lastmodon)
.HasColumnType("datetime")
.HasColumnName("LASTMODON")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.TxtAttendee)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtAttendee");
entity.Property(e => e.TxtEmail)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtEmail");
});
modelBuilder.Entity<CqiNotification>(entity =>
{
entity.HasKey(e => e.IdNotification)
.HasName("idxNotifyType");
entity.ToTable("cqiNotifications");
entity.Property(e => e.IdNotification).HasColumnName("idNotification");
entity.Property(e => e.Lastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("lastmodby");
entity.Property(e => e.Lastmodon)
.HasColumnType("datetime")
.HasColumnName("lastmodon")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.Message)
.HasMaxLength(1000)
.IsUnicode(false);
entity.Property(e => e.NotificationType)
.HasMaxLength(50)
.IsUnicode(false);
});
modelBuilder.Entity<CqiRegion>(entity =>
{
entity.HasKey(e => e.IdRegion);
entity.ToTable("cqiRegions");
entity.Property(e => e.IdRegion).HasColumnName("idRegion");
entity.Property(e => e.Lastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("lastmodby");
entity.Property(e => e.Lastmodon)
.HasColumnType("datetime")
.HasColumnName("lastmodon")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.TxtRegion)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtRegion");
});
modelBuilder.Entity<CqiReport>(entity =>
{
entity.HasNoKey();
entity.ToTable("cqiReports");
entity.Property(e => e.ReBegDt)
.HasColumnType("smalldatetime")
.HasColumnName("RE_Beg_Dt");
entity.Property(e => e.ReDescription)
.HasMaxLength(200)
.IsUnicode(false)
.HasColumnName("RE_Description");
entity.Property(e => e.ReEndDt)
.HasColumnType("smalldatetime")
.HasColumnName("RE_End_Dt");
entity.Property(e => e.ReParam1)
.HasMaxLength(20)
.IsUnicode(false)
.HasColumnName("RE_Param1");
entity.Property(e => e.ReParam2)
.HasMaxLength(20)
.IsUnicode(false)
.HasColumnName("RE_Param2");
entity.Property(e => e.ReParam3)
.HasMaxLength(20)
.IsUnicode(false)
.HasColumnName("RE_Param3");
entity.Property(e => e.ReParam4)
.HasMaxLength(20)
.IsUnicode(false)
.HasColumnName("RE_Param4");
entity.Property(e => e.ReParam5)
.HasMaxLength(20)
.IsUnicode(false)
.HasColumnName("RE_Param5");
entity.Property(e => e.ReParam6)
.HasMaxLength(20)
.IsUnicode(false)
.HasColumnName("RE_Param6");
entity.Property(e => e.ReParam7)
.HasMaxLength(20)
.IsUnicode(false)
.HasColumnName("RE_Param7");
entity.Property(e => e.ReParam8)
.HasMaxLength(20)
.IsUnicode(false)
.HasColumnName("RE_param8");
entity.Property(e => e.ReReportNm)
.IsRequired()
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("RE_Report_Nm");
entity.Property(e => e.ReSysid).HasColumnName("RE_Sysid");
});
modelBuilder.Entity<CqiStaff>(entity =>
{
entity.HasKey(e => e.IdStaff);
entity.ToTable("cqiStaff");
entity.HasIndex(e => e.TxtEmail, "IX_cqiStaff")
.HasFillFactor((byte)90);
entity.HasIndex(e => e.Txtlogin, "IX_cqiStaffLogin")
.HasFillFactor((byte)90);
entity.HasIndex(e => e.TxtRole, "IX_cqiStaffRole")
.HasFillFactor((byte)90);
entity.Property(e => e.IdStaff).HasColumnName("idStaff");
entity.Property(e => e.C1Cqispecialists)
.HasMaxLength(1)
.IsUnicode(false)
.HasColumnName("c1CQISpecialists")
.HasDefaultValueSql("('N')")
.IsFixedLength(true);
entity.Property(e => e.C1Scribe)
.HasMaxLength(1)
.IsUnicode(false)
.HasColumnName("c1Scribe")
.HasDefaultValueSql("('N')")
.IsFixedLength(true);
entity.Property(e => e.GetsNotification)
.HasMaxLength(5)
.IsUnicode(false)
.HasDefaultValueSql("('TRUE')")
.IsFixedLength(true);
entity.Property(e => e.Lastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("lastmodby")
.HasDefaultValueSql("('USER()')");
entity.Property(e => e.Lastmodon)
.HasColumnType("datetime")
.HasColumnName("lastmodon")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.TxtCounty)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtCounty")
.HasDefaultValueSql("('')");
entity.Property(e => e.TxtEmail)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtEmail")
.HasDefaultValueSql("('')");
entity.Property(e => e.TxtFirst)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtFirst")
.HasDefaultValueSql("('NO NAME')");
entity.Property(e => e.TxtLast)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtLast")
.HasDefaultValueSql("('NO NAME')");
entity.Property(e => e.TxtLevel)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtLevel")
.HasDefaultValueSql("('')");
entity.Property(e => e.TxtRegion)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtRegion")
.HasDefaultValueSql("('')");
entity.Property(e => e.TxtRole)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtRole")
.HasDefaultValueSql("('')");
entity.Property(e => e.TxtTeam)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtTeam")
.HasDefaultValueSql("('')");
entity.Property(e => e.Txtlogin)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtlogin")
.HasDefaultValueSql("('')");
});
modelBuilder.Entity<CqiStatus>(entity =>
{
entity.HasKey(e => e.IdStatus);
entity.ToTable("cqiStatus");
entity.Property(e => e.IdStatus).HasColumnName("idStatus");
entity.Property(e => e.DteLastMod)
.HasColumnType("datetime")
.HasColumnName("dteLastMod")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.IntLevel).HasColumnName("intLevel");
entity.Property(e => e.TxtAction)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtAction");
entity.Property(e => e.TxtStatus)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtStatus");
entity.Property(e => e.Txtlastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtlastmodby");
});
modelBuilder.Entity<CqiTAttachment>(entity =>
{
entity.HasNoKey();
entity.ToTable("CQI_T_ATTACHMENTS");
entity.Property(e => e.Attach)
.IsRequired()
.HasColumnName("ATTACH");
entity.Property(e => e.AttachId)
.ValueGeneratedOnAdd()
.HasColumnName("ATTACH_ID");
entity.Property(e => e.AttachName)
.IsRequired()
.HasMaxLength(150)
.IsUnicode(false)
.HasColumnName("ATTACH_NAME");
entity.Property(e => e.AttachSize).HasColumnName("ATTACH_SIZE");
entity.Property(e => e.AttachType)
.IsRequired()
.HasMaxLength(100)
.IsUnicode(false)
.HasColumnName("ATTACH_TYPE");
entity.Property(e => e.CreateBy)
.IsRequired()
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("CREATE_BY");
entity.Property(e => e.CreateDate)
.HasColumnType("datetime")
.HasColumnName("CREATE_DATE");
entity.Property(e => e.TypeAttach)
.IsRequired()
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("TYPE_ATTACH");
entity.Property(e => e.TypeId).HasColumnName("TYPE_ID");
entity.Property(e => e.UpdateBy)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("UPDATE_BY");
entity.Property(e => e.UpdateDate)
.HasColumnType("datetime")
.HasColumnName("UPDATE_DATE");
});
modelBuilder.Entity<CqiTeam>(entity =>
{
entity.HasKey(e => e.IdTeam);
entity.ToTable("cqiTeams");
entity.Property(e => e.IdTeam).HasColumnName("idTeam");
entity.Property(e => e.Active)
.HasMaxLength(1)
.IsUnicode(false);
entity.Property(e => e.CountyorBranchId)
.HasColumnName("CountyorBranchID")
.HasDefaultValueSql("((0))");
entity.Property(e => e.DteLastMod)
.HasColumnType("datetime")
.HasColumnName("dteLastMod")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.Lastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("lastmodby");
entity.Property(e => e.RegionorDivisonId)
.HasColumnName("RegionorDivisonID")
.HasDefaultValueSql("((0))");
entity.Property(e => e.TeamType)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.TxtTeam)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtTeam");
});
modelBuilder.Entity<CqiTopic>(entity =>
{
entity.HasKey(e => e.IdTopic);
entity.ToTable("cqiTopics");
entity.Property(e => e.IdTopic).HasColumnName("idTopic");
entity.Property(e => e.Category)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("CATEGORY");
entity.Property(e => e.Confidential)
.HasMaxLength(1)
.IsUnicode(false)
.HasColumnName("CONFIDENTIAL")
.HasDefaultValueSql("('N')")
.IsFixedLength(true);
entity.Property(e => e.DteLastMod)
.HasColumnType("datetime")
.HasColumnName("dteLastMod")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.TxtTopic)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtTopic");
entity.Property(e => e.Txtlastmodby)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtlastmodby");
});
modelBuilder.Entity<Cqidocumenttype>(entity =>
{
entity.ToTable("cqidocumenttype");
entity.Property(e => e.DocumentType)
.HasMaxLength(100)
.IsUnicode(false);
});
modelBuilder.Entity<MinutesIssueCount>(entity =>
{
entity.HasNoKey();
entity.ToView("MinutesIssueCount");
entity.Property(e => e.DteMeeting)
.HasColumnType("datetime")
.HasColumnName("dteMeeting");
entity.Property(e => e.IdMinutes).HasColumnName("idMinutes");
entity.Property(e => e.TxtLevel)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtLevel");
entity.Property(e => e.TxtMeetingDesc)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("txtMeetingDesc");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}
}
=========================================================================================
{
public class GenericRepository<T> : IGenericRepository<T> where T : class
{
protected CQIContext context = null;
private DbSet<T> entity = null;
public GenericRepository(CQIContext _context)
{
this.context = _context;
entity = _context.Set<T>();
}
public async Task Create(T obj)
{
entity.Add(obj); ;
}
public async Task AddRange(IEnumerable<T> entities)
{
context.Set<T>().AddRange(entities);
}
public void Delete(int id)
{
T existing = entity.Find(id);
entity.Remove(existing);
}
public async Task RemoveRange(IEnumerable<T> entities)
{
context.Set<T>().RemoveRange(entities);
}
public async Task<IEnumerable<T>> GetAll()
{
return await entity.AsNoTracking().ToListAsync();
}
public async Task<T> GetById(int Id)
{
// return await entity.FindAsync(Id);
var result = await context.Set<T>().FindAsync(Id);
context.Entry(result).State = EntityState.Detached;
return result;
}
public async Task Update(T obj)
{
if (this.GetState(obj) == EntityState.Detached)
{
this.entity.Attach(obj);
// await context.SaveChangesAsync();
}
this.SetModified(obj);
}
public virtual EntityState GetState(T obj)
{
return this.GetEntry(obj).State;
}
private EntityEntry GetEntry(T obj)
{
return this.context.Entry(obj);
}
public virtual void SetModified(T obj)
{
this.GetEntry(obj).State = EntityState.Modified;
}
}
}
===================================================================
{
public class UnitOfWork : IUnitOfWork
{
private readonly CQIContext _context;
private readonly ILogger logger;
private readonly IMapper mapper;
public UnitOfWork(CQIContext context,ILogger logger , IMapper mapper)
{
_context = context;
this.logger = logger;
this.mapper = mapper;
CountyRepo = new CountyRepository(logger,mapper,_context);
RegionRepo = new RegionRepository(_context);
MinutesRepo = new MinutesRepository(_context);
CategoryRepo = new CategoryRepository(_context);
}
public ICountyRepository CountyRepo { get; private set; }
public IRegionRepository RegionRepo { get; private set; }
public IMinutesRepository MinutesRepo { get; private set; }
public IIssueRepository IssuesRepo { get; private set; }
public ICategoryRepository CategoryRepo { get; private set; }
public int Complete()
{
return _context.SaveChanges();
}
public void Dispose()
{
_context.Dispose();
}
}
}
=======================================================================================
{
public class GenericUnitOfWork<T> : IGenericUnitOfWork<T> where T : class
{
private readonly CQIContext context;
public GenericUnitOfWork(CQIContext context)
{
this.context = context;
GenericRepo = new GenericRepository<T>(context);
}
public IGenericRepository<T> GenericRepo { get; private set; }
public int Complete()
{
return context.SaveChanges();
}
public void Dispose()
{
context.Dispose();
}
}
}
===================================================================================
{
public class GenericService<TModel,TEntity> : IGenericService<TModel,TEntity> where TModel : class
where TEntity : class
{
private readonly IGenericUnitOfWork<TModel> uow;
private readonly IMapper mapper;
private readonly ILogger logger;
public GenericService(IGenericUnitOfWork<TModel> uow
, IMapper mapper
, ILogger logger)
{
this.uow = uow;
this.mapper = mapper;
this.logger = logger;
}
public async Task<IEnumerable<TEntity>> GetAllAsync()
{
try
{
var cqiObj = await uow.GenericRepo.GetAll();
var obj = mapper.Map<IEnumerable<TEntity>>(cqiObj);
return obj;
}
catch (Exception ex)
{
logger.LogError($"Failed while retrieving Entities", ex);
throw;
}
}
public async Task<TEntity> GetByIdAsync(int Id)
{
try
{
var cqiObj = await uow.GenericRepo.GetById(Id);
var obj = mapper.Map<TEntity>(cqiObj);
return obj;
}
catch (Exception ex)
{
logger.LogError($"Failed while retrieving Entity By Id : {Id}", ex);
throw;
}
}
public async Task PutAsync(TEntity entity)
{
try
{
var cqiObj = mapper.Map<TModel>(entity);
await uow.GenericRepo.Update(cqiObj);
uow.Complete();
}
catch (Exception ex)
{
logger.LogError($"Failed while saving TEntity by ID", ex);
throw;
}
}
public async Task<TEntity> PostAsync(TEntity entity)
{
try
{
var cqiObj = mapper.Map<TModel>(entity);
await uow.GenericRepo.Create(cqiObj);
uow.Complete();
return entity;
}
catch (Exception ex)
{
logger.LogError($"Failed while creating a new Obj", ex);
throw;
}
}
public async Task DeleteAsync(int Id)
{
try
{
uow.GenericRepo.Delete(Id);
}
catch (Exception ex)
{
logger.LogError($"Failed while deleting Entity By Id : {Id}", ex);
throw;
}
}
}
}
======================================================================================================
{
public class MapperProfile : Profile
{
public MapperProfile()
{
CreateMap<CqiCounty, County>()
.ForMember(d => d.CountyID, s => s.MapFrom(s => s.IdCounty))
.ForMember(d => d.CountyName, s => s.MapFrom(s => s.TxtCounty))
.ForMember(d => d.RegionID, s => s.MapFrom(s => s.Idregion))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Lastmodby))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.Lastmodon))
.ReverseMap()
;
CreateMap<CqiRegion, Region>()
.ForMember(d => d.ID, s => s.MapFrom(s => s.IdRegion))
.ForMember(d => d.Name, s => s.MapFrom(s => s.TxtRegion))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.Lastmodon))
.ForMember(d => d.UpdatedBy, s=> s.MapFrom(s => s.Lastmodby))
.ReverseMap()
;
CreateMap<CqiMinute, Minutes>()
.ForMember(d => d.ID, s => s.MapFrom(s => s.IdMinutes))
.ForMember(d => d.MeetingDate, s => s.MapFrom(s => s.DteMeeting))
.ForMember(d => d.MeetingDescription, s => s.MapFrom(s => s.TxtMeetingDesc))
.ForMember(d => d.LevelCode, s => s.MapFrom(s => s.LevelCode))
.ForMember(d => d.Level, s => s.MapFrom(s => s.TxtLevel))
.ForMember(d => d.Region, s => s.MapFrom(s => s.TxtRegion))
.ForMember(d => d.County, s => s.MapFrom(s => s.TxtCounty))
.ForMember(d => d.Team, s => s.MapFrom(s => s.TxtTeam))
.ForMember(d => d.Division, s => s.MapFrom(s => s.TxtDivision))
.ForMember(d => d.Department, s => s.MapFrom(s => s.TxtDepartment))
.ForMember(d => d.Branch, s => s.MapFrom(s => s.TxtBranch))
.ForMember(d => d.Facilitator, s => s.MapFrom(s => s.TxtFacilitator))
.ForMember(d => d.Scribe, s => s.MapFrom(s => s.TxtScribe))
.ForMember(d => d.C1ReviewPrevMinutes, s => s.MapFrom(s => s.C1ReviewPrevMinutes))
.ForMember(d => d.OtherAttendees, s => s.MapFrom(s => s.TxtOtherAttendees))
.ForMember(d => d.ReviewPrevMinComments, s => s.MapFrom(s => s.TxtReviewPrevMinComments))
.ForMember(d => d.Partners, s => s.MapFrom(s => s.TxtPartners))
.ForMember(d => d.ServiceComplaints, s => s.MapFrom(s => s.TxtServiceComplaints))
.ForMember(d => d.MgtReports, s => s.MapFrom(s => s.TxtMgtReports))
.ForMember(d => d.WorkplaceSafety, s => s.MapFrom(s => s.TxtWorkplaceSafety))
.ForMember(d => d.CaseReview, s => s.MapFrom(s => s.TxtCaseReview))
.ForMember(d => d.IntNumofCaseReviews, s => s.MapFrom(s => s.IntNumofCaseReviews))
.ForMember(d => d.IntNumofPpcasereviews, s => s.MapFrom(s => s.IntNumofPpcasereviews))
.ForMember(d => d.EmployeeRecognition, s => s.MapFrom(s => s.TxtEmployeeRecognition))
.ForMember(d => d.C1MinutesApproved, s => s.MapFrom(s => s.C1MinutesApproved))
.ForMember(d => d.DateMinutesAddedon, s => s.MapFrom(s => s.DteMinutesAddedon))
.ForMember(d => d.DateMinutesModified, s => s.MapFrom(s => s.DteMinutesModified))
.ForMember(d => d.ScribeAddedBy, s => s.MapFrom(s => s.TxtScribeAddedBy))
.ForMember(d => d.ScribeLastModBy, s => s.MapFrom(s => s.TxtScribeLastModBy))
.ReverseMap();
CreateMap<CqiIssue, Issues>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdIssue))
.ForMember(d => d.MinutesId, s => s.MapFrom(s => s.IdMinutes))
.ForMember(d => d.IssueSubject, s => s.MapFrom(s => s.TxtIssueSubject))
.ForMember(d => d.IssueDescription, s => s.MapFrom(s => s.TxtIssueDesc))
.ForMember(d => d.LevelCode, s => s.MapFrom(s => s.LevelCode))
.ForMember(d => d.CurrentLevel, s => s.MapFrom(s => s.TxtCurrentLevel))
.ForMember(d => d.OrigLevelCode, s => s.MapFrom(s => s.OrigLevelCode))
.ForMember(d => d.OriginalLevel, s => s.MapFrom(s => s.TxtOriginalLevel))
.ForMember(d => d.C1Completed, s => s.MapFrom(s => s.C1Completed))
.ForMember(d => d.C1Resolved, s => s.MapFrom(s => s.C1Resolved))
.ForMember(d => d.Status, s => s.MapFrom(s => s.TxtStatus))
.ForMember(d => d.Category, s => s.MapFrom(s => s.TxtCategory))
.ForMember(d => d.Topic, s => s.MapFrom(s => s.TxtTopic))
.ForMember(d => d.C1Confidential, s => s.MapFrom(s => s.C1Confidential))
.ForMember(d => d.AssignedTo, s => s.MapFrom(s => s.TxtAssignedTo))
.ForMember(d => d.DateIssueAdded, s => s.MapFrom(s => s.DteIssueAdded))
.ForMember(d => d.DateIssueLastMod, s => s.MapFrom(s => s.DteIssueLastMod))
.ForMember(d => d.IssueAddedBy, s => s.MapFrom(s => s.TxtIssueAddedBy))
.ForMember(d => d.IssueLastModBy, s => s.MapFrom(s => s.TxtIssueLastModBy))
.ReverseMap();
CreateMap<CqiTopic, Topic>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdTopic))
.ForMember(d => d.Category, s => s.MapFrom(s => s.Category))
.ForMember(d => d.Confidential, s => s.MapFrom(s => s.Confidential))
.ForMember(d => d.TopicDescription, s => s.MapFrom(s => s.TxtTopic))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Txtlastmodby))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.DteLastMod))
.ReverseMap();
CreateMap<CqiStaff, Staff>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdStaff))
.ForMember(d => d.Login, s => s.MapFrom(s => s.Txtlogin))
.ForMember(d => d.Email, s => s.MapFrom(s => s.TxtEmail))
.ForMember(d => d.LevelCode, s => s.MapFrom(s => s.LevelCode))
.ForMember(d => d.Level, s => s.MapFrom(s => s.TxtLevel))
.ForMember(d => d.Region, s => s.MapFrom(s => s.TxtRegion))
.ForMember(d => d.County, s => s.MapFrom(s => s.TxtCounty))
.ForMember(d => d.C1Scribe, s => s.MapFrom(s => s.C1Scribe))
.ForMember(d => d.Role, s => s.MapFrom(s => s.TxtRole))
.ForMember(d => d.C1Cqispecialists, s => s.MapFrom(s => s.C1Cqispecialists))
.ForMember(d => d.Team, s => s.MapFrom(s => s.TxtTeam))
.ForMember(d => d.FirstName, s => s.MapFrom(s => s.TxtFirst))
.ForMember(d => d.LastName, s => s.MapFrom(s => s.TxtLast))
.ForMember(d => d.IsNotification, s => s.MapFrom(s => s.GetsNotification))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.Lastmodon))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Lastmodby))
.ReverseMap();
CreateMap<CqiCategory, Category>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdCategory))
.ForMember(d => d.CategoryDescription, s => s.MapFrom(s => s.TxtCategory))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.DteLastMod))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Txtlastmodby))
.ReverseMap();
CreateMap<CqiDivision, Division>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdDivision))
.ForMember(d => d.Description, s => s.MapFrom(s => s.TxtDivision))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Txtlastmodby))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.Dtelastmod))
.ReverseMap();
CreateMap<CqiDepartment, Department>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdDepartment))
.ForMember(d => d.Description, s => s.MapFrom(s => s.TxtDepartment))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Lastmodby))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.Lastmodon))
.ReverseMap();
CreateMap<CqiFaq, FrequentlyAdvancedIssues>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdFaq))
.ForMember(d => d.Question, s => s.MapFrom(s => s.Question))
.ForMember(d => d.Answer, s => s.MapFrom(s => s.Answer))
.ForMember(d => d.Active, s => s.MapFrom(s => s.Active))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Txtlastmodby))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.DteLastMod))
.ForMember(d => d.AddedBy, s => s.MapFrom(s => s.TxtAddedBy))
.ForMember(d => d.AddedDate, s => s.MapFrom(s => s.DteAdded))
.ReverseMap();
CreateMap<CqiNotification, Notification>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdNotification))
.ForMember(d => d.NotificationType, s => s.MapFrom(s => s.NotificationType))
.ForMember(d => d.Message, s => s.MapFrom(s => s.Message))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Lastmodon))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.Lastmodby))
.ReverseMap();
CreateMap<CqiBranch, Branch>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdBranch))
.ForMember(d => d.DivisionId, s => s.MapFrom(s => s.IdDivision))
.ForMember(d => d.Description, s => s.MapFrom(s => s.TxtBranch))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Txtlastmodby))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.Lastmodon))
.ReverseMap();
CreateMap<CqiIssueAction, IssueAction>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdAction))
.ForMember(d => d.MinutesId, s => s.MapFrom(s => s.IdMinutes))
.ForMember(d => d.IssueId, s => s.MapFrom(s => s.IdIssue))
.ForMember(d => d.IssueSubject, s => s.MapFrom(s => s.IssueSubject))
.ForMember(d => d.Description, s => s.MapFrom(s => s.IssueAction))
.ForMember(d => d.CreatedDate, s => s.MapFrom(s => s.DteIssueAction))
.ForMember(d => d.ActionNotes, s => s.MapFrom(s => s.ActionNotes))
.ForMember(d => d.NextLevel, s => s.MapFrom(s => s.NextLevel))
.ForMember(d => d.ActionBy, s => s.MapFrom(s => s.ActionBy))
.ForMember(d => d.C1Completed, s => s.MapFrom(s => s.C1Completed))
.ReverseMap();
CreateMap<CqiTeam, Team>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdTeam))
.ForMember(d => d.TeamDescription, s => s.MapFrom(s => s.TxtTeam))
.ForMember(d => d.Type, s => s.MapFrom(s => s.TeamType))
.ForMember(d => d.CountyorBranchId, s => s.MapFrom(s => s.CountyorBranchId))
.ForMember(d => d.RegionorDivisonId, s => s.MapFrom(s => s.RegionorDivisonId))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Lastmodby))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.DteLastMod))
.ForMember(d => d.Active, s => s.MapFrom(s => s.Active))
.ReverseMap();
CreateMap<CqiLevel, Level>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdLevel))
.ForMember(d => d.Description, s => s.MapFrom(s => s.TxtLevel))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Txtlastmodby))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.Dtelastmod))
.ReverseMap();
CreateMap<CqiStatus, Status>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdStatus))
.ForMember(d => d.Level, s => s.MapFrom(s => s.IntLevel))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Txtlastmodby))
.ForMember(d => d.Action, s => s.MapFrom(s => s.TxtAction))
.ForMember(d => d.Description, s => s.MapFrom(s => s.TxtStatus))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.DteLastMod))
.ReverseMap();
CreateMap<CqiTopic, Topic>()
.ForMember(d => d.Id, s => s.MapFrom(s => s.IdTopic))
.ForMember(d => d.Category, s => s.MapFrom(s => s.Category))
.ForMember(d => d.TopicDescription, s => s.MapFrom(s => s.TxtTopic))
.ForMember(d => d.Confidential, s => s.MapFrom(s => s.Confidential))
.ForMember(d => d.UpdatedDate, s => s.MapFrom(s => s.DteLastMod))
.ForMember(d => d.UpdatedBy, s => s.MapFrom(s => s.Txtlastmodby))
.ReverseMap();
CreateMap<CqiDocument, Document>()
.ForMember(d => d.DocumentId, s => s.MapFrom(s => s.DocumentId))
.ForMember(d => d.DmsGuid, s => s.MapFrom(s => s.DmsGuid))
.ForMember(d => d.ExpirationDate, s => s.MapFrom(s => s.ExpirationDate))
.ForMember(d => d.FileExtension, s => s.MapFrom(s => s.FileExtension))
.ForMember(d => d.InternalId, s => s.MapFrom(s => s.InternalId))
.ForMember(d => d.AppType, s => s.MapFrom(s => s.AppType))
.ForMember(d => d.DocType, s => s.MapFrom(s => s.DocType))
.ForMember(d => d.DocDesc, s => s.MapFrom(s => s.DocDesc))
.ForMember(d => d.CreatedBy, s => s.MapFrom(s => s.CreatedBy))
.ForMember(d => d.ModifiedDate, s => s.MapFrom(s => s.ModifiedDate))
.ForMember(d => d.ModifiedBy, s => s.MapFrom(s => s.ModifiedBy))
.ForMember(d => d.LoginId, s => s.MapFrom(s => s.LoginId))
.ReverseMap();
}
}
}
============================================================================================
{
public class GenericTypeControllerFeatureProvider : IApplicationFeatureProvider<ControllerFeature>
{
public void PopulateFeature(IEnumerable<ApplicationPart> parts, ControllerFeature feature)
{
foreach (var model_type in EntityTypes.model_types)
{
var entity_type = model_type.Key;
var entity_request_types = model_type.Value[0];
Type[] typeArgs = { entity_type, model_type.Value[0]};
var controller_type = typeof(GenericController<,>).MakeGenericType(typeArgs).GetTypeInfo();
feature.Controllers.Add(controller_type);
}
}
}
}
========================================================================================================
{
public static class EntityTypes
{
public static Dictionary<TypeInfo, List<TypeInfo>> model_types => new()
{
{ typeof(Category).GetTypeInfo(),new List<TypeInfo>() { typeof(CqiCategory).GetTypeInfo()} },
{ typeof(Division).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiDivision).GetTypeInfo() } },
{ typeof(Department).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiDepartment).GetTypeInfo() } },
{ typeof(IssueAction).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiIssueAction).GetTypeInfo() } },
{ typeof(Notification).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiNotification).GetTypeInfo() } },
{ typeof(Branch).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiBranch).GetTypeInfo() } },
{ typeof(Team).GetTypeInfo(),new List<TypeInfo>() { typeof(CqiTeam).GetTypeInfo()} },
{ typeof(Issues).GetTypeInfo(),new List<TypeInfo>() { typeof(CqiIssue).GetTypeInfo()} },
{ typeof(Minutes).GetTypeInfo(),new List<TypeInfo>() { typeof(CqiMinute).GetTypeInfo()} },
{ typeof(Staff).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiStaff).GetTypeInfo()} },
{ typeof(Level).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiLevel).GetTypeInfo()} },
{ typeof(Region).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiRegion).GetTypeInfo()} },
{ typeof(County).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiCounty).GetTypeInfo()} },
{ typeof(Topic).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiTopic).GetTypeInfo()} },
{ typeof(FrequentlyAdvancedIssues).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiFaq).GetTypeInfo() } },
{ typeof(Status).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiStatus).GetTypeInfo()} },
{ typeof(Document).GetTypeInfo(), new List<TypeInfo>() { typeof(CqiDocument).GetTypeInfo()} }
};
}
}
==================================================================================
{
public static async Task<string> GetAll(string url)
{
// Call asynchronous network methods in a try/catch block to handle exceptions.
try
{
HttpClient client = new HttpClient();
//HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
// Above three lines can be replaced with new helper method below
// string responseBody = await client.GetStringAsync(uri);
Console.WriteLine(responseBody);
}
catch (HttpRequestException e)
{
Console.WriteLine("\nException Caught!");
Console.WriteLine("Message :{0} ", e.Message);
throw;
}
}
}
/// <summary>
/// A generic wrapper class to REST API calls
/// </summary>
/// <typeparam name="T"></typeparam>
public static class HTTPClientWrapper<T> where T : class
{
/// <summary>
/// For getting all the resources from a web api
/// </summary>
/// <param name="url">API Url</param>
/// <returns>A Task with result object of type T</returns>
public static async Task<IEnumerable<T>> GetAll(string url)
{
IEnumerable<T> result = null;
using (var httpClient = new HttpClient())
{
var response = httpClient.GetAsync(new Uri(url)).Result;
response.EnsureSuccessStatusCode();
result = await response.Content.ReadAsAsync<IEnumerable<T>>();
//await response.Content.ReadAsAsync().ContinueWith((Task<string> x) =>
//{
// if (x.IsFaulted)
// throw x.Exception;
// result = JsonConvert.DeserializeObject<T>(x.Result);
//});
}
return result;
}
/// <summary>
/// For getting the resources from a web api
/// </summary>
/// <param name="url">API Url</param>
/// <returns>A Task with result object of type T</returns>
public static async Task<T> Get(string url)
{
T result = null;
using (var httpClient = new HttpClient())
{
var response = httpClient.GetAsync(new Uri(url)).Result;
response.EnsureSuccessStatusCode();
await response.Content.ReadAsStringAsync().ContinueWith((Task<string> x) =>
{
if (x.IsFaulted)
throw x.Exception;
result = JsonConvert.DeserializeObject<T>(x.Result);
});
}
return result;
}
/// <summary>
/// For creating a new item over a web api using POST
/// </summary>
/// <param name="apiUrl">API Url</param>
/// <param name="postObject">The object to be created</param>
/// <returns>A Task with created item</returns>
public static async Task<T> PostRequest(string apiUrl, T postObject)
{
T result = null;
using (var client = new HttpClient())
{
var response = await client.PostAsync(apiUrl, postObject, new JsonMediaTypeFormatter()).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
await response.Content.ReadAsStringAsync().ContinueWith((Task<string> x) =>
{
if (x.IsFaulted)
throw x.Exception;
result = JsonConvert.DeserializeObject<T>(x.Result);
});
}
return result;
}
/// <summary>
/// For updating an existing item over a web api using PUT
/// </summary>
/// <param name="apiUrl">API Url</param>
/// <param name="putObject">The object to be edited</param>
public static async Task PutRequest(string apiUrl, T putObject)
{
using (var client = new HttpClient())
{
var response = await client.PutAsync(apiUrl, putObject, new JsonMediaTypeFormatter()).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
}
}
/// <summary>
/// For getting the resources from a web api
/// </summary>
/// <param name="url">API Url</param>
/// <returns>A Task with result object of type T</returns>
public static async Task<T> Delete(string url)
{
T result = null;
using (var httpClient = new HttpClient())
{
var response = httpClient.DeleteAsync(new Uri(url)).Result;
response.EnsureSuccessStatusCode();
await response.Content.ReadAsStringAsync().ContinueWith((Task<string> x) =>
{
if (x.IsFaulted)
throw x.Exception;
result = JsonConvert.DeserializeObject<T>(x.Result);
});
}
return result;
}
public static async Task<Byte[]> GetReportByteArray(T item, string url)
{
var response = await PostReportItem<byte[]>(item, url);
return response;
}
public static async Task<TResponse> PostReportItem<TResponse>(dynamic item, string Url)
{
try
{
StringBuilder newExceptionMessage = new StringBuilder();
var json = JsonConvert.SerializeObject(item);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var _httpClient = new HttpClient(GetClientHandler());
HttpResponseMessage httpResponse = await _httpClient.PostAsync(Url, content);
if (httpResponse.IsSuccessStatusCode)
{
var responseText = await httpResponse.Content.ReadAsStringAsync();
var rtnObj = (dynamic)JsonConvert.DeserializeObject(responseText);
if (rtnObj.StatusCode == ReturnStatusCode.Success)
{
// Checking if the T is not a class and its a standard type.
if (typeof(TResponse) == typeof(String) || typeof(TResponse) == typeof(int) || typeof(TResponse) == typeof(byte[]))
return rtnObj.data;
else
return JsonConvert.DeserializeObject<T>(rtnObj.data.ToString());
}
else if (rtnObj.StatusCode == ReturnStatusCode.ValidationError)
//Throw Custom Validation in case of validationError
throw new Exception(string.Join(",", rtnObj.Message));
else if (rtnObj.StatusCode == ReturnStatusCode.Failed)
{
newExceptionMessage.Append(" LogId : ");
newExceptionMessage.Append(rtnObj.DBErrorLogId);
newExceptionMessage.Append(" FormattedExceptionMessage: ");
throw new BadHttpRequestException(string.Join(", API Error Message: ", newExceptionMessage));
}
return rtnObj;
}
throw new Exception(httpResponse.ReasonPhrase);
}
catch (Exception ex)
{
throw ex;
}
}
public static HttpClientHandler GetClientHandler()
{
var _clientHandler = new HttpClientHandler();
_clientHandler.ClientCertificateOptions = ClientCertificateOption.Automatic;
// _clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
_clientHandler.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
X509Certificate2 clientCert = CertificateHelper.GetClientCertificate();
_clientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
_clientHandler.ClientCertificates.Add(clientCert);
return _clientHandler;
}
}