36 Commits

Author SHA1 Message Date
ab800974b7 Programmability objects from database
Removed commented code
Added fn_GetExpiredTECNByOriginator
2024-12-12 12:15:46 -07:00
b99b721458 Moved System.IO references from DMO classes to Static Helpers
Removed nugetSource from pipeline
Removed more comments
Created Static Classes for most DMO / Controller Classes
Push ConfigurationManager.AppSettings to controller
Align Tests with other Projects
2024-12-11 09:29:01 -07:00
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
538b1f817e Align .editorconfig files
When debugging only
app.Services.GetRequiredService<IPCRBService>();

Injected AppSettings instead of using GetEnvironmentVariable at Services level

Get ready to use VSCode IDE
2024-12-03 12:23:56 -07:00
89790f4fc1 PCRB webassembly 2024-11-15 09:28:25 -07:00
9b7e3ef897 MRB webassembly 2024-11-15 09:28:21 -07:00
ba8d92ea01 DRY 2024-08-05 07:39:40 -07:00
603052d7e5 Clean up training assignments through report 2024-08-02 15:06:59 -07:00
c97ce37238 Added note about removing TECN from POU when cancelled 2024-07-10 09:33:29 -07:00
10dbd08cd2 Added ECN approvers note to other affected views 2024-06-14 09:09:45 -07:00
1b7e482ad4 Removed duplicated tasks 2024-06-12 08:14:39 -07:00
cbcd3ee53a Added ECN approvers note 2024-06-11 09:40:31 -07:00
fe981c4c04 Add note about red dates in training report 2024-05-15 07:06:39 -07:00
3e6fc3fdb3 Assignments late in report after 15 days 2024-05-14 14:01:25 -07:00
1b17cd75c2 Removing PCRB and MRB modules 2024-05-08 08:26:30 -07:00
5d701ded55 Broadening notifications for cancelled TECNs 2023-11-01 09:18:39 -07:00
0289e62e9f Rejected CA notifications include who and why 2023-10-31 20:07:50 +01:00
d6af4b6ef9 Added validation for required field at CA Ready via Jquery in the edit page. 2023-10-30 23:39:38 +01:00
4e04d4666d Use same local attachment folder location in dev and prod 2023-10-30 17:19:20 +01:00
88af83cf96 Prepended Create for MRB and ECN 2023-10-30 17:19:20 +01:00
e8ec36fe3e Updated ECN approval caption 2023-10-30 17:19:20 +01:00
4b83a89cb0 Changed server addresses in links 2023-10-30 17:19:20 +01:00
ca651191c8 Switching to internal mailrealy 2023-10-30 17:19:20 +01:00
ffe6cd7c63 Prepended Create for MRB and ECN 2023-10-16 14:16:41 -07:00
e1675fe9e9 Updated ECN approval caption 2023-10-09 11:43:08 -07:00
a3053eadf6 Removed ITAR check 2023-10-03 10:14:54 -07:00
7cc645c188 Changed url schema to use ssl 2023-09-20 14:28:38 -07:00
fbeb8b3cf7 Corrected prod site url config 2023-09-20 14:22:34 -07:00
27728bd0c4 Corrected email template placeholders 2023-09-20 14:12:02 -07:00
7330647172 Limiting training report to only run in production 2023-09-20 09:28:08 -07:00
167db67027 Creating OOOTrainingReport scheduled job 2023-09-18 16:09:03 -07:00
9c5c938157 Loosening 6DValidate permissions 2023-09-18 11:42:01 -07:00
989d0f401e Update azure-pipelines.yml for Azure Pipelines 2023-09-15 21:28:41 +00:00
15c7a15b8e Update azure-pipelines.yml for Azure Pipelines 2023-09-15 20:43:45 +00:00
7e4a17845c Updated Nuget package source for development 2023-09-15 20:24:57 +00:00
1f96c01a5b Trying JFrog 2023-09-08 22:44:12 +00:00
884 changed files with 86751 additions and 34528 deletions

View File

@ -1,74 +0,0 @@
# EditorConfig is awesome:http://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
# Don't use tabs for indentation.
# (Please don't specify an indent_size here; that has too many unintended consequences.)
indent_style = space
charset = utf-8
# Where supported, trim trailing whitespace on all lines.
trim_trailing_whitespace = true
# Where supported (e.g. in VS Code but not VS), add a final newline to files.
insert_final_newline = true
# Code files
[*.{cs,csx,vb,vbx}]
indent_size = 4
dotnet_sort_system_directives_first = true:warning
# Xml project files
[*.{*proj,vcxproj.filters,projitems}]
indent_size = 2
# Xml config files
[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct,tasks,xml,yml}]
indent_size = 2
# JSON files
[*.json]
indent_size = 2
# PowerShell
[*.{ps1,psm1}]
indent_size = 4
# Shell
[*.sh]
indent_size = 4
end_of_line = lf
# Dotnet code style settings:
[*.cs]
# Sort using and Import directives with System.* appearing first
dotnet_sort_system_directives_first = true
# Don't use this. qualifier
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
# use int x = .. over Int32
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
# use int.MaxValue over Int32.MaxValue
dotnet_style_predefined_type_for_member_access = true:suggestion
# Require var all the time.
csharp_style_var_for_built_in_types = false:suggestion
csharp_style_var_when_type_is_apparent = false:suggestion
csharp_style_var_elsewhere = false:suggestion
# Disallow throw expressions.
csharp_style_throw_expression = false:suggestion
# Newline settings
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true

20
.gitignore vendored
View File

@ -337,3 +337,23 @@ ASALocalRun/
!.vscode/tasks.json !.vscode/tasks.json
!.vscode/launch.json !.vscode/launch.json
!.vscode/extensions.json !.vscode/extensions.json
.env
/Fab2ApprovalMKLink/App_Start
/Fab2ApprovalMKLink/Controllers
/Fab2ApprovalMKLink/DMO
/Fab2ApprovalMKLink/Jobs
/Fab2ApprovalMKLink/JobSchedules
/Fab2ApprovalMKLink/Misc
/Fab2ApprovalMKLink/Models
/Fab2ApprovalMKLink/PdfGenerator
/Fab2ApprovalMKLink/Utilities
/Fab2ApprovalMKLink/ViewModels
/Fab2ApprovalMKLink/.vscode/.UserSecrets
/Fab2ApprovalSystem/.vscode/.UserSecrets
/Fab2ApprovalTests/.vscode/.UserSecrets
/MesaFabApproval.API/.vscode/.UserSecrets
/MesaFabApproval.Client/.vscode/.UserSecrets
/MesaFabApproval.Shared/.vscode/.UserSecrets

41
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,41 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console) - Fab2ApprovalSystem",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "Fab2ApprovalSystem-build",
"program": "${workspaceFolder}/Fab2ApprovalSystem/bin/Debug/net8.0/win-x64/Fab2ApprovalSystem.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": ".NET Core Launch (console) - MesaFabApproval.API",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "MesaFabApproval.API-build",
"program": "${workspaceFolder}/MesaFabApproval.API/bin/Debug/net8.0/MesaFabApproval.API.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
},
{
"type": "node",
"request": "launch",
"name": "node Launch Current Opened File",
"program": "${file}"
}
]
}

424
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,424 @@
{
"[markdown]": {
"editor.wordWrap": "off"
},
"files.exclude": {
"**/.git": false,
"**/node_modules": true
},
"files.watcherExclude": {
"**/node_modules": true
},
"cSpell.words": [
"abutton",
"accessibilities",
"accodingly",
"acknowledgmentby",
"Acks",
"actionsheet",
"Additonal",
"Addtional",
"againm",
"agendaview",
"Antlr",
"Appover",
"Appprrovers",
"Approvalog",
"Aprovers",
"Aproverslist",
"asax",
"aspnetmvc",
"Assignedto",
"Atachments",
"Attachemnt",
"Attachemnts",
"Attchment",
"auditee",
"Auditee",
"Auditees",
"automaically",
"Autthorized",
"beacuase",
"beforeunload",
"Belguim",
"bfound",
"bgcolor",
"Bies",
"binded",
"blackbackground",
"blackhover",
"blackpressed",
"blueenergy",
"blueopal",
"buttongroup",
"BYMRB",
"bytesgot",
"CAID",
"casection",
"CAXXXX",
"CCPCR",
"CCPCRB",
"cellspacing",
"Cheeso's",
"chkbx",
"Clib",
"colorpicker",
"columnmenu",
"columnsreorder",
"columnsresize",
"comming",
"Containmen",
"Copmments",
"correctiv",
"Correctivet",
"Creat",
"currentd",
"Cyle",
"dadada",
"darkbluehover",
"darkbluepressed",
"darkred",
"datafields",
"datasource",
"dataviz",
"datepicker",
"datetimepicker",
"dayview",
"Deletet",
"Delgation",
"DENITED",
"Deparmtent",
"departmentids",
"Descirption",
"devprog",
"dfeffc",
"Disp",
"Dispo",
"Dispoitio",
"Dispos",
"Dispositon",
"Dispostion",
"Dispostions",
"dispotypevalidation",
"Docbase",
"Documentum",
"Documetum",
"dont",
"downlaoded",
"draganddrop",
"dragcancel",
"dropdownlist",
"Eamils",
"ECNPCRB",
"Ecns",
"edmx",
"EECN",
"emai",
"emailparams",
"Emergrncy",
"energyblue",
"Eran",
"Esql",
"ETECN",
"EXCELOPENXML",
"existinglocation",
"Expando",
"extrafield",
"fadc",
"fbec",
"fcfdfd",
"fdff",
"fece",
"feeebd",
"ffdc",
"ffdd",
"fieldset",
"FILIPE",
"filtermenu",
"Fldr",
"flintstone",
"FLOWLOCS",
"FMEA",
"ftplib",
"FTPSPN",
"GETDATE",
"gitea",
"globaldocudms",
"glyphicons",
"groupable",
"Guids",
"halflings",
"Hexsize",
"highcontrast",
"Hmac",
"holdsteps",
"hostspecific",
"icenium",
"IECN",
"imagebrowser",
"IMRB",
"Infineon",
"Insertd",
"inverseicons",
"IPCRB",
"ISADMIN",
"islast",
"ISNULL",
"ITAR",
"jquery",
"jqueryval",
"jqwidgets",
"jqxbuttongroup",
"jqxbuttons",
"jqxcalendar",
"jqxchart",
"jqxcheckbox",
"jqxcolorpicker",
"jqxcombobox",
"jqxcore",
"jqxdata",
"jqxdatatable",
"jqxdatetimeinput",
"jqxdocking",
"jqxdockpanel",
"jqxdragdrop",
"jqxdropdownbutton",
"jqxdropdownlist",
"jqxexpander",
"jqxgauge",
"jqxgrid",
"jqxinput",
"jqxknockout",
"jqxlistbox",
"jqxlistmenu",
"jqxmaskedinput",
"jqxmenu",
"jqxnavigationbar",
"jqxnumberinput",
"jqxpanel",
"jqxpasswordinput",
"jqxprogressbar",
"jqxradiobutton",
"jqxrangeselector",
"jqxrating",
"jqxresponse",
"jqxscrollbar",
"jqxscrollview",
"jqxslider",
"jqxsplitter",
"jqxswitchbutton",
"jqxtabs",
"jqxtooltip",
"jqxtouch",
"jqxtree",
"jqxtreegrid",
"jqxtreemap",
"jqxvalidator",
"jqxwindow",
"kendogridcustom",
"kendoui",
"labelelement",
"labelledby",
"Leanred",
"lightgray",
"linkbutton",
"Linq",
"Listdiv",
"listview",
"Lnks",
"localfilename",
"loclist",
"logis",
"logtext",
"loopmis",
"lotdispo",
"LOTDISPSITION",
"Lotfile",
"lotlist",
"lotstatusoption",
"LTRIM",
"MADUREIRA",
"mailrelay",
"MDTM",
"meego",
"meetingid",
"menubutton",
"mesafi",
"metroblack",
"metrodark",
"miliseconds",
"modalview",
"modernizr",
"Modernizr",
"monthview",
"MRBIs",
"Mrbs",
"msecs",
"multipleextended",
"Navigatable",
"nbsp",
"newbase",
"newchange",
"newdi",
"newfilename",
"newsource",
"Newtonsoft",
"notications",
"Notifcation",
"Notifyf",
"NTLM",
"Nullcc",
"numerictextbox",
"objdata",
"OCAP",
"occured",
"odata",
"oldfilename",
"OLHOLD",
"onclick",
"onmousemove",
"OPDESC",
"OPENQUERY",
"Oper",
"operationslist",
"Orginator",
"Originatorname",
"Ouellette",
"Owin",
"pageable",
"Pageable",
"panelbar",
"parentid",
"parminput",
"parms",
"Parms",
"particula",
"pasv",
"PASV",
"PATINDEX",
"PCRB",
"PCRBID",
"pcrvalues",
"pdbonly",
"Preventitive",
"preventivet",
"Prevetative",
"proces",
"Processedl",
"procs",
"productfamilies",
"progess",
"progressbar",
"qrcode",
"Quanityt",
"rangebar",
"Recep",
"Recepient",
"recieved",
"recordlock",
"remotefilename",
"reorderable",
"reportform",
"reportslist",
"reportslistdiv",
"Reqquired",
"Reqs",
"Requiest",
"Responsibles",
"RETR",
"Revisioing",
"Revisioned",
"Revison",
"rgba",
"rkotian",
"RNFR",
"RNTO",
"Roless",
"roundbg",
"RTRIM",
"SAMDB",
"scroller",
"scrollview",
"seleced",
"selectionlog",
"Selectpart",
"sess",
"Sfisharepoint",
"shinyblack",
"showpassword",
"SIGNON",
"simpleparser",
"slddrw",
"sldprt",
"sortasc",
"sortascbutton",
"sortdesc",
"sortdescbutton",
"sortremove",
"sparkline",
"splitview",
"SPNMRB",
"SPNPDB",
"SSRS",
"Sssign",
"Staus",
"stylesheet",
"Submited",
"subrole",
"subroles",
"Succefully",
"Succesfully",
"sucessfully",
"SURP",
"Swashbuckle",
"SWRN",
"tabindex",
"tabstrip",
"Tahoma",
"taskcompleted",
"Tasklist",
"Taveler",
"TECN",
"TECNs",
"TEMIRWAP",
"tempecd",
"tempimplement",
"templabel",
"tempvalue",
"TEMSA",
"timepicker",
"Tobe",
"Toplevel",
"Totrav",
"trainingby",
"Traininglist",
"traininglistdiv",
"transanction",
"Trav",
"Traveller",
"Traverler",
"TRAVLELER",
"Travler",
"TREEVIEW",
"trigerred",
"ttinclude",
"Uhandled",
"Updat",
"Uplaod",
"Upto",
"userevents",
"userids",
"userlist",
"Validatable",
"valueelement",
"Variabls",
"Verdana",
"vgrid",
"viewmodel",
"vsdoc",
"whethere",
"windowsphone",
"Winsock",
"worlflow"
]
}

500
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,500 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "MSBuild",
"command": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
"type": "process",
"args": [
"/target:Build",
"/restore:True",
"/p:RestoreSources=https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/%3Bhttps://packagemanagement.eu.infineon.com:4430/api/v2/%3Bhttps://api.nuget.org/v3/index.json",
"/detailedsummary",
"/consoleloggerparameters:PerformanceSummary;ErrorsOnly;",
"/property:Configuration=Debug;TargetFrameworkVersion=v4.8",
"Fab2ApprovalSystem/Fab2ApprovalSystem.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalMKLink-User Secrets Init",
"command": "dotnet",
"type": "process",
"args": [
"user-secrets",
"-p",
"${workspaceFolder}/Fab2ApprovalMKLink/Fab2ApprovalMKLink.csproj",
"init"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalMKLink-User Secrets Set",
"command": "dotnet",
"type": "process",
"args": [
"user-secrets",
"-p",
"${workspaceFolder}/Fab2ApprovalMKLink/Fab2ApprovalMKLink.csproj",
"set",
"_UserSecretsId",
"f2da5035-aba9-4676-9f8d-d6689f84663d"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalMKLink-Format",
"command": "dotnet",
"type": "process",
"args": [
"format",
"--report",
".vscode",
"--verbosity",
"detailed",
"--severity",
"warn"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalMKLink-Format-Whitespaces",
"command": "dotnet",
"type": "process",
"args": [
"format",
"whitespace"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalMKLink-build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Fab2ApprovalMKLink/Fab2ApprovalMKLink.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalMKLink-publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/Fab2ApprovalMKLink/Fab2ApprovalMKLink.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalMKLink-watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/Fab2ApprovalMKLink/Fab2ApprovalMKLink.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalMKLink-Publish AOT",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"-r",
"win-x64",
"-c",
"Release",
"-p:PublishAot=true",
"${workspaceFolder}/Fab2ApprovalMKLink/Fab2ApprovalMKLink.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalTests-User Secrets Init",
"command": "dotnet",
"type": "process",
"args": [
"user-secrets",
"-p",
"${workspaceFolder}/Fab2ApprovalTests/Fab2ApprovalTests.csproj",
"init"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalTests-User Secrets Set",
"command": "dotnet",
"type": "process",
"args": [
"user-secrets",
"-p",
"${workspaceFolder}/Fab2ApprovalTests/Fab2ApprovalTests.csproj",
"set",
"_UserSecretsId",
"3942d1fb-d585-40ae-8985-d276d1b94b77"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalTests-Format",
"command": "dotnet",
"type": "process",
"args": [
"format",
"--report",
".vscode",
"--verbosity",
"detailed",
"--severity",
"warn"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalTests-Format-Whitespaces",
"command": "dotnet",
"type": "process",
"args": [
"format",
"whitespace"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalTests-build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Fab2ApprovalTests/Fab2ApprovalTests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalTests-testDebug",
"command": "dotnet",
"type": "process",
"args": [
"test",
"${workspaceFolder}/Fab2ApprovalTests/Fab2ApprovalTests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalTests-testRelease",
"command": "dotnet",
"type": "process",
"args": [
"test",
"${workspaceFolder}/Fab2ApprovalTests/Fab2ApprovalTests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"-c",
"Release"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalTests-publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/Fab2ApprovalTests/Fab2ApprovalTests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalTests-watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/Fab2ApprovalTests/Fab2ApprovalTests.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "Fab2ApprovalTests-Publish AOT",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"-r",
"win-x64",
"-c",
"Release",
"-p:PublishAot=true",
"${workspaceFolder}/Fab2ApprovalTests/Fab2ApprovalTests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.API-User Secrets Init",
"command": "dotnet",
"type": "process",
"args": [
"user-secrets",
"-p",
"${workspaceFolder}/MesaFabApproval.API/MesaFabApproval.API.csproj",
"init"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.API-User Secrets Set",
"command": "dotnet",
"type": "process",
"args": [
"user-secrets",
"-p",
"${workspaceFolder}/MesaFabApproval.API/MesaFabApproval.API.csproj",
"set",
"_UserSecretsId",
"0b98e1f2-95ed-4edd-8149-58cce51ca059"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.API-Format",
"command": "dotnet",
"type": "process",
"args": [
"format",
"--report",
".vscode",
"--verbosity",
"detailed",
"--severity",
"warn"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.API-Format-Whitespaces",
"command": "dotnet",
"type": "process",
"args": [
"format",
"whitespace"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.API-build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/MesaFabApproval.API/MesaFabApproval.API.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.API-testDebug",
"command": "dotnet",
"type": "process",
"args": [
"test",
"${workspaceFolder}/MesaFabApproval.API/MesaFabApproval.API.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.API-testRelease",
"command": "dotnet",
"type": "process",
"args": [
"test",
"${workspaceFolder}/MesaFabApproval.API/MesaFabApproval.API.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"-c",
"Release"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.API-publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/MesaFabApproval.API/MesaFabApproval.API.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.API-watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/MesaFabApproval.API/MesaFabApproval.API.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.API-Publish AOT",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"-r",
"win-x64",
"-c",
"Release",
"-p:PublishAot=true",
"${workspaceFolder}/MesaFabApproval.API/MesaFabApproval.API.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.Client-User Secrets Init",
"command": "dotnet",
"type": "process",
"args": [
"user-secrets",
"-p",
"${workspaceFolder}/MesaFabApproval.Client/MesaFabApproval.Client.csproj",
"init"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.Client-Format",
"command": "dotnet",
"type": "process",
"args": [
"format",
"--report",
".vscode",
"--verbosity",
"detailed",
"--severity",
"warn"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.Client-Format-Whitespaces",
"command": "dotnet",
"type": "process",
"args": [
"format",
"whitespace"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.Client-build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/MesaFabApproval.Client/MesaFabApproval.Client.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.Client-testDebug",
"command": "dotnet",
"type": "process",
"args": [
"test",
"${workspaceFolder}/MesaFabApproval.Client/MesaFabApproval.Client.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.Client-testRelease",
"command": "dotnet",
"type": "process",
"args": [
"test",
"${workspaceFolder}/MesaFabApproval.Client/MesaFabApproval.Client.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"-c",
"Release"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.Client-publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/MesaFabApproval.Client/MesaFabApproval.Client.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.Client-watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/MesaFabApproval.Client/MesaFabApproval.Client.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "MesaFabApproval.Client-Publish AOT",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"-r",
"win-x64",
"-c",
"Release",
"-p:PublishAot=true",
"${workspaceFolder}/MesaFabApproval.Client/MesaFabApproval.Client.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
}
]
}

View File

@ -0,0 +1,380 @@
[*.md]
end_of_line = crlf
file_header_template = unset
indent_size = 2
indent_style = space
insert_final_newline = false
root = true
tab_width = 2
[*.csproj]
end_of_line = crlf
file_header_template = unset
indent_size = 2
indent_style = space
insert_final_newline = false
root = true
tab_width = 2
[*.cs]
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_labels = one_less_than_current
csharp_indent_switch_labels = true
csharp_new_line_before_catch = false
csharp_new_line_before_else = false
csharp_new_line_before_finally = false
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = none
csharp_new_line_between_query_expression_clauses = true
csharp_prefer_braces = false
csharp_prefer_qualified_reference = true:error
csharp_prefer_simple_default_expression = true:warning
csharp_prefer_simple_using_statement = true:warning
csharp_prefer_static_local_function = true:warning
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = false
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true
csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true
csharp_style_allow_embedded_statements_on_same_line_experimental = true
csharp_style_conditional_delegate_call = true
csharp_style_deconstructed_variable_declaration = false
csharp_style_expression_bodied_accessors = when_on_single_line:warning
csharp_style_expression_bodied_constructors = when_on_single_line:warning
csharp_style_expression_bodied_indexers = when_on_single_line:warning
csharp_style_expression_bodied_lambdas = when_on_single_line:warning
csharp_style_expression_bodied_local_functions = when_on_single_line:warning
csharp_style_expression_bodied_methods = when_on_single_line:warning
csharp_style_expression_bodied_operators = when_on_single_line:warning
csharp_style_expression_bodied_properties = when_on_single_line:warning
csharp_style_implicit_object_creation_when_type_is_apparent = true:warning
csharp_style_inlined_variable_declaration = false
csharp_style_namespace_declarations = file_scoped:warning
csharp_style_pattern_local_over_anonymous_function = true:warning
csharp_style_pattern_matching_over_as_with_null_check = true:warning
csharp_style_pattern_matching_over_is_with_cast_check = true:warning
csharp_style_prefer_index_operator = true:warning
csharp_style_prefer_not_pattern = true:warning
csharp_style_prefer_null_check_over_type_check = true
csharp_style_prefer_pattern_matching = true:warning
csharp_style_prefer_range_operator = true:warning
csharp_style_prefer_switch_expression = true:warning
csharp_style_throw_expression = true
csharp_style_unused_value_assignment_preference = discard_variable:warning
csharp_style_unused_value_expression_statement_preference = discard_variable:warning
csharp_style_var_elsewhere = false:warning
csharp_style_var_for_built_in_types = false:warning
csharp_style_var_when_type_is_apparent = false:warning
csharp_using_directive_placement = outside_namespace
dotnet_analyzer_diagnostic.category-Design.severity = error
dotnet_analyzer_diagnostic.category-Documentation.severity = error
dotnet_analyzer_diagnostic.category-Globalization.severity = none
dotnet_analyzer_diagnostic.category-Interoperability.severity = error
dotnet_analyzer_diagnostic.category-Maintainability.severity = error
dotnet_analyzer_diagnostic.category-Naming.severity = none
dotnet_analyzer_diagnostic.category-Performance.severity = none
dotnet_analyzer_diagnostic.category-Reliability.severity = error
dotnet_analyzer_diagnostic.category-Security.severity = error
dotnet_analyzer_diagnostic.category-SingleFile.severity = error
dotnet_analyzer_diagnostic.category-Style.severity = error
dotnet_analyzer_diagnostic.category-Usage.severity = error
dotnet_code_quality_unused_parameters = all
dotnet_code_quality_unused_parameters = non_public
dotnet_code_quality.CAXXXX.api_surface = private, internal
dotnet_diagnostic.CA1001.severity = error # CA1001: Types that own disposable fields should be disposable
dotnet_diagnostic.CA1051.severity = error # CA1051: Do not declare visible instance fields
dotnet_diagnostic.CA1511.severity = warning # CA1511: Use 'ArgumentException.ThrowIfNullOrEmpty' instead of explicitly throwing a new exception instance
dotnet_diagnostic.CA1513.severity = warning # Use 'ObjectDisposedException.ThrowIf' instead of explicitly throwing a new exception instance
dotnet_diagnostic.CA1825.severity = warning # CA1825: Avoid zero-length array allocations
dotnet_diagnostic.CA1829.severity = error # CA1829: Use Length/Count property instead of Count() when available
dotnet_diagnostic.CA1834.severity = warning # CA1834: Consider using 'StringBuilder.Append(char)' when applicable
dotnet_diagnostic.CA1860.severity = error # CA1860: Prefer comparing 'Count' to 0 rather than using 'Any()', both for clarity and for performance
dotnet_diagnostic.CA1862.severity = warning # CA1862: Prefer using 'string.Equals(string, StringComparison)' to perform a case-insensitive comparison, but keep in mind that this might cause subtle changes in behavior, so make sure to conduct thorough testing after applying the suggestion, or if culturally sensitive comparison is not required, consider using 'StringComparison.OrdinalIgnoreCase'
dotnet_diagnostic.CA1869.severity = none # CA1869: Avoid creating a new 'JsonSerializerOptions' instance for every serialization operation. Cache and reuse instances instead.
dotnet_diagnostic.CA2201.severity = none # CA2201: Exception type System.NullReferenceException is reserved by the runtime
dotnet_diagnostic.CA2254.severity = none # CA2254: The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])'
dotnet_diagnostic.IDE0001.severity = warning # IDE0001: Simplify name
dotnet_diagnostic.IDE0002.severity = warning # Simplify (member access) - System.Version.Equals("1", "2"); Version.Equals("1", "2");
dotnet_diagnostic.IDE0004.severity = warning # IDE0004: Cast is redundant.
dotnet_diagnostic.IDE0005.severity = error # Using directive is unnecessary
dotnet_diagnostic.IDE0010.severity = none # Add missing cases to switch statement (IDE0010)
dotnet_diagnostic.IDE0028.severity = error # IDE0028: Collection initialization can be simplified
dotnet_diagnostic.IDE0031.severity = warning # Use null propagation (IDE0031)
dotnet_diagnostic.IDE0047.severity = warning # IDE0047: Parentheses can be removed
dotnet_diagnostic.IDE0048.severity = none # Parentheses preferences (IDE0047 and IDE0048)
dotnet_diagnostic.IDE0049.severity = warning # Use language keywords instead of framework type names for type references (IDE0049)
dotnet_diagnostic.IDE0051.severity = error # Private member '' is unused [, ]
dotnet_diagnostic.IDE0058.severity = error # IDE0058: Expression value is never used
dotnet_diagnostic.IDE0060.severity = error # IDE0060: Remove unused parameter
dotnet_diagnostic.IDE0074.severity = warning # IDE0074: Use compound assignment
dotnet_diagnostic.IDE0130.severity = none # Namespace does not match folder structure (IDE0130)
dotnet_diagnostic.IDE0270.severity = warning # IDE0270: Null check can be simplified
dotnet_diagnostic.IDE0290.severity = none # Use primary constructor [Distance]csharp(IDE0290)
dotnet_diagnostic.IDE0300.severity = error # IDE0300: Collection initialization can be simplified
dotnet_diagnostic.IDE0301.severity = error #IDE0301: Collection initialization can be simplified
dotnet_diagnostic.IDE0305.severity = none # IDE0305: Collection initialization can be simplified
dotnet_diagnostic.IDE2000.severity = error # IDE2000: Allow multiple blank lines
dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning
dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.abstract_method_should_be_pascal_case.symbols = abstract_method
dotnet_naming_rule.class_should_be_pascal_case.severity = warning
dotnet_naming_rule.class_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.class_should_be_pascal_case.symbols = class
dotnet_naming_rule.delegate_should_be_pascal_case.severity = warning
dotnet_naming_rule.delegate_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.delegate_should_be_pascal_case.symbols = delegate
dotnet_naming_rule.enum_should_be_pascal_case.severity = warning
dotnet_naming_rule.enum_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.enum_should_be_pascal_case.symbols = enum
dotnet_naming_rule.event_should_be_pascal_case.severity = warning
dotnet_naming_rule.event_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.event_should_be_pascal_case.symbols = event
dotnet_naming_rule.interface_should_be_begins_with_i.severity = warning
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.method_should_be_pascal_case.severity = warning
dotnet_naming_rule.method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.method_should_be_pascal_case.symbols = method
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = warning
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.private_method_should_be_pascal_case.severity = warning
dotnet_naming_rule.private_method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.private_method_should_be_pascal_case.symbols = private_method
dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.severity = warning
dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.style = private_of_internal_field
dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.symbols = private_or_internal_field
dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.severity = warning
dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.style = private_of_internal_field
dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.symbols = private_or_internal_static_field
dotnet_naming_rule.property_should_be_pascal_case.severity = warning
dotnet_naming_rule.property_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.property_should_be_pascal_case.symbols = property
dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.severity = warning
dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.style = private_of_internal_field
dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.symbols = public_or_protected_field
dotnet_naming_rule.static_field_should_be_pascal_case.severity = warning
dotnet_naming_rule.static_field_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.static_field_should_be_pascal_case.symbols = static_field
dotnet_naming_rule.static_method_should_be_pascal_case.severity = warning
dotnet_naming_rule.static_method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.static_method_should_be_pascal_case.symbols = static_method
dotnet_naming_rule.struct_should_be_pascal_case.severity = warning
dotnet_naming_rule.struct_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.struct_should_be_pascal_case.symbols = struct
dotnet_naming_rule.types_should_be_pascal_case.severity = warning
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_style.begins_with_i.capitalization = pascal_case
dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.private_of_internal_field.capitalization = pascal_case
dotnet_naming_style.private_of_internal_field.required_prefix = _
dotnet_naming_style.private_of_internal_field.required_suffix =
dotnet_naming_style.private_of_internal_field.word_separator =
dotnet_naming_symbols.abstract_method.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.abstract_method.applicable_kinds = method
dotnet_naming_symbols.abstract_method.required_modifiers = abstract
dotnet_naming_symbols.class.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.class.applicable_kinds = class
dotnet_naming_symbols.class.required_modifiers =
dotnet_naming_symbols.delegate.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.delegate.applicable_kinds = delegate
dotnet_naming_symbols.delegate.required_modifiers =
dotnet_naming_symbols.enum.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.enum.applicable_kinds = enum
dotnet_naming_symbols.enum.required_modifiers =
dotnet_naming_symbols.event.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.event.applicable_kinds = event
dotnet_naming_symbols.event.required_modifiers =
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.method.applicable_accessibilities = public
dotnet_naming_symbols.method.applicable_kinds = method
dotnet_naming_symbols.method.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.required_modifiers =
dotnet_naming_symbols.private_method.applicable_accessibilities = private
dotnet_naming_symbols.private_method.applicable_kinds = method
dotnet_naming_symbols.private_method.required_modifiers =
dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected
dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field
dotnet_naming_symbols.private_or_internal_field.required_modifiers =
dotnet_naming_symbols.private_or_internal_static_field.applicable_accessibilities = internal, private, private_protected
dotnet_naming_symbols.private_or_internal_static_field.applicable_kinds = field
dotnet_naming_symbols.private_or_internal_static_field.required_modifiers = static
dotnet_naming_symbols.property.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.property.applicable_kinds = property
dotnet_naming_symbols.property.required_modifiers =
dotnet_naming_symbols.public_or_protected_field.applicable_accessibilities = public, protected
dotnet_naming_symbols.public_or_protected_field.applicable_kinds = field
dotnet_naming_symbols.public_or_protected_field.required_modifiers =
dotnet_naming_symbols.static_field.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.static_field.applicable_kinds = field
dotnet_naming_symbols.static_field.required_modifiers = static
dotnet_naming_symbols.static_method.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.static_method.applicable_kinds = method
dotnet_naming_symbols.static_method.required_modifiers = static
dotnet_naming_symbols.struct.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.struct.applicable_kinds = struct
dotnet_naming_symbols.struct.required_modifiers =
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.required_modifiers =
dotnet_remove_unnecessary_suppression_exclusions = 0
dotnet_separate_import_directive_groups = true
dotnet_sort_system_directives_first = true
dotnet_style_allow_multiple_blank_lines_experimental = false:warning
dotnet_style_allow_statement_immediately_after_block_experimental = true
dotnet_style_coalesce_expression = true
dotnet_style_collection_initializer = true:warning
dotnet_style_explicit_tuple_names = true:warning
dotnet_style_namespace_match_folder = true
dotnet_style_null_propagation = true:warning
dotnet_style_object_initializer = true:warning
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_operators = never_if_unnecessary
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
dotnet_style_predefined_type_for_locals_parameters_members = true
dotnet_style_predefined_type_for_member_access = true:warning
dotnet_style_prefer_auto_properties = true:warning
dotnet_style_prefer_compound_assignment = true:warning
dotnet_style_prefer_conditional_expression_over_assignment = false
dotnet_style_prefer_conditional_expression_over_return = false
dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning
dotnet_style_prefer_inferred_tuple_names = true:warning
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning
dotnet_style_prefer_simplified_boolean_expressions = true:warning
dotnet_style_prefer_simplified_interpolation = true
dotnet_style_qualification_for_event = false:error
dotnet_style_qualification_for_field = false
dotnet_style_qualification_for_method = false:error
dotnet_style_qualification_for_property = false:error
dotnet_style_readonly_field = true:warning
dotnet_style_require_accessibility_modifiers = for_non_interface_members
end_of_line = crlf
file_header_template = unset
indent_size = 4
indent_style = space
insert_final_newline = false
root = true
tab_width = 4
# https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1822
# https://github.com/dotnet/aspnetcore/blob/main/.editorconfig
# https://github.com/dotnet/project-system/blob/main/.editorconfig
# Question
csharp_prefer_simple_using_statement = false # Question
csharp_style_expression_bodied_constructors = when_on_single_line:none # Question
csharp_style_expression_bodied_properties = true # Question
csharp_style_implicit_object_creation_when_type_is_apparent = true:warning # Question
csharp_style_pattern_matching_over_as_with_null_check = false # Question
csharp_style_prefer_pattern_matching = false # Question
csharp_style_prefer_range_operator = false # Question
csharp_style_prefer_switch_expression = false # Question
csharp_style_unused_value_assignment_preference = unused_local_variable # Question
csharp_style_unused_value_expression_statement_preference = false # Question
csharp_style_var_elsewhere = false:none # Question
csharp_style_var_for_built_in_types = false:none # Question
csharp_style_var_when_type_is_apparent = false:warning # Question
dotnet_diagnostic.CA1001.severity = none # Question - Types that own disposable fields should be disposable
dotnet_diagnostic.CA1051.severity = none # Question - Do not declare visible instance fields
dotnet_diagnostic.CA1416.severity = none # Question - This call site is reachable on all platforms.
dotnet_diagnostic.CA1510.severity = none # Question - Use
dotnet_diagnostic.CA1834.severity = none # CA1834: Consider using 'StringBuilder.Append(char)' when applicable
dotnet_diagnostic.CA1860.severity = none # Question - Avoid using
dotnet_diagnostic.CA1862.severity = none # Question - Prefer using
dotnet_diagnostic.CA2208.severity = none # Question - Instantiate argument exceptions correctly
dotnet_diagnostic.CA2211.severity = none # Question - Non-constant fields should not be visible
dotnet_diagnostic.CA2249.severity = none # Question - Use
dotnet_diagnostic.CA2253.severity = none # Question - Named placeholders should not be numeric values
dotnet_diagnostic.CS0103.severity = none # Question - The name
dotnet_diagnostic.CS0168.severity = none # Question - The variable
dotnet_diagnostic.CS0219.severity = none # Question - The variable
dotnet_diagnostic.CS0612.severity = none # Question - is obsolete
dotnet_diagnostic.CS0618.severity = none # Question - Compiler Warning (level 2)
dotnet_diagnostic.CS0659.severity = none # Question - Compiler Warning (level 3)
dotnet_diagnostic.CS8019.severity = warning # Question - Unnecessary using directive.
dotnet_diagnostic.CS8600.severity = none # Question - Converting null literal or possible null value to non-nullable type
dotnet_diagnostic.CS8602.severity = none # Question - Dereference of a possibly null reference.
dotnet_diagnostic.CS8603.severity = none # Question - Possible null reference return
dotnet_diagnostic.CS8604.severity = none # Question - Possible null reference argument for parameter.
dotnet_diagnostic.CS8618.severity = none # Question - Non-nullable variable must contain a non-null value when exiting constructor
dotnet_diagnostic.CS8625.severity = none # Question - Cannot convert null literal to non-nullable reference type.
dotnet_diagnostic.CS8629.severity = none # Question - Nullable value type may be null
dotnet_diagnostic.CS8765.severity = none # Question - Nullability of type of parameter
dotnet_diagnostic.IDE0005.severity = none # Question - Remove unnecessary using directives
dotnet_diagnostic.IDE0008.severity = warning # Question - Use explicit type instead of
dotnet_diagnostic.IDE0017.severity = none # Question - Object initialization can be simplified
dotnet_diagnostic.IDE0019.severity = none # Question - Use pattern matching
dotnet_diagnostic.IDE0021.severity = none # Question - Use expression body for constructor
dotnet_diagnostic.IDE0022.severity = none # Question - Use expression body for method
dotnet_diagnostic.IDE0025.severity = none # Question - Use expression body for property
dotnet_diagnostic.IDE0027.severity = none # Question - Use expression body for accessor
dotnet_diagnostic.IDE0028.severity = none # Question - Use collection initializers or expressions
dotnet_diagnostic.IDE0031.severity = none # Question - Null check can be simplified
dotnet_diagnostic.IDE0032.severity = none # Question - Use auto property
dotnet_diagnostic.IDE0037.severity = none # Question - Member name can be simplified
dotnet_diagnostic.IDE0041.severity = none # Question - Null check can be simplified
dotnet_diagnostic.IDE0047.severity = none # Question - Parentheses preferences
dotnet_diagnostic.IDE0049.severity = warning # Question - Name can be simplified
dotnet_diagnostic.IDE0051.severity = none # Question - Remove unused private member
dotnet_diagnostic.IDE0053.severity = none # Question - Use expression body for lambdas
dotnet_diagnostic.IDE0054.severity = none # Question - Use compound assignment
dotnet_diagnostic.IDE0055.severity = none # Question - Formatting rule
dotnet_diagnostic.IDE0057.severity = none # Question - Substring can be simplified
dotnet_diagnostic.IDE0058.severity = none # Question - Remove unnecessary expression value
dotnet_diagnostic.IDE0059.severity = none # Question - Unnecessary assignment of a value to
dotnet_diagnostic.IDE0060.severity = none # Question - Remove unused parameter
dotnet_diagnostic.IDE0063.severity = none # Question - Use simple
dotnet_diagnostic.IDE0065.severity = none # Question -
dotnet_diagnostic.IDE0066.severity = none # Question - Use
dotnet_diagnostic.IDE0078.severity = none # Question - Use pattern matching (may change code meaning)
dotnet_diagnostic.IDE0090.severity = warning # Question - Simplify new expression
dotnet_diagnostic.IDE0160.severity = warning # Question - Use block-scoped namespace
dotnet_diagnostic.IDE0161.severity = warning # Question - Namespace declaration preferences
dotnet_diagnostic.IDE0270.severity = none # Question - Null check can be simplified
dotnet_diagnostic.IDE0300.severity = none # Question - Collection initialization can be simplified
dotnet_diagnostic.IDE1006.severity = none # Question - Use collection expression for builder dotnet_style_prefer_collection_expression
dotnet_style_null_propagation = false # Question
dotnet_style_object_initializer = false # Question
dotnet_style_prefer_auto_properties = false # Question
dotnet_style_allow_statement_immediately_after_block_experimental = true # Question
dotnet_style_prefer_inferred_anonymous_type_member_names = false:warning # Question
dotnet_style_prefer_is_null_check_over_reference_equality_method = false # Question

View File

@ -0,0 +1 @@
[]

33
Fab2ApprovalMKLink/.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,33 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net8.0/Fab2ApprovalMKLink.dll",
"args": [
"s",
"test"
],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
},
{
"type": "node",
"request": "launch",
"name": "node Launch Current Opened File",
"program": "${file}"
}
]
}

37
Fab2ApprovalMKLink/.vscode/mklink.md vendored Normal file
View File

@ -0,0 +1,37 @@
# mklink
```bash 1731546128283 = 638671429282830000 = Wed Nov 13 2024 18:02:07 GMT-0700 (Mountain Standard Time)
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\App_Start" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\App_Start"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\bin" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\bin"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Content" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Content"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Controllers" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Controllers"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\DMO" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\DMO"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\EmailTemplates" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\EmailTemplates"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\fonts" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\fonts"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\FTPBatch" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\FTPBatch"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Jobs" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Jobs"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\JobSchedules" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\JobSchedules"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Lib" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Lib"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Misc" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Misc"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Models" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Models"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\obj" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\obj"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\PdfGenerator" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\PdfGenerator"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Properties" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Properties"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\SafeModels" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\SafeModels"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Scripts" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Scripts"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Utilities" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Utilities"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\View" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\View"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\ViewModels" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\ViewModels"
```
```bash 1731615429577 = 638672122295770000 = Thu Nov 14 2024 13:17:09 GMT-0700 (Mountain Standard Time)
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\.vscode\.UserSecrets" "C:\Users\phares\AppData\Roaming\Microsoft\UserSecrets\f2da5035-aba9-4676-9f8d-d6689f84663d"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\ViewModels" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\ViewModels"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Models" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Models"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Misc" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Misc"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\DMO" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\DMO"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Utilities" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Utilities"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\PdfGenerator" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\PdfGenerator"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\Jobs" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\Jobs"
mklink /J "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalMKLink\JobSchedules" "L:\DevOps\Mesa_FI\MesaFabApproval\Fab2ApprovalSystem\JobSchedules"
```

424
Fab2ApprovalMKLink/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,424 @@
{
"[markdown]": {
"editor.wordWrap": "off"
},
"files.exclude": {
"**/.git": false,
"**/node_modules": true
},
"files.watcherExclude": {
"**/node_modules": true
},
"cSpell.words": [
"abutton",
"accessibilities",
"accodingly",
"acknowledgmentby",
"Acks",
"actionsheet",
"Additonal",
"Addtional",
"againm",
"agendaview",
"Antlr",
"Appover",
"Appprrovers",
"Approvalog",
"Aprovers",
"Aproverslist",
"asax",
"aspnetmvc",
"Assignedto",
"Atachments",
"Attachemnt",
"Attachemnts",
"Attchment",
"auditee",
"Auditee",
"Auditees",
"automaically",
"Autthorized",
"beacuase",
"beforeunload",
"Belguim",
"bfound",
"bgcolor",
"Bies",
"binded",
"blackbackground",
"blackhover",
"blackpressed",
"blueenergy",
"blueopal",
"buttongroup",
"BYMRB",
"bytesgot",
"CAID",
"casection",
"CAXXXX",
"CCPCR",
"CCPCRB",
"cellspacing",
"Cheeso's",
"chkbx",
"Clib",
"colorpicker",
"columnmenu",
"columnsreorder",
"columnsresize",
"comming",
"Containmen",
"Copmments",
"correctiv",
"Correctivet",
"Creat",
"currentd",
"Cyle",
"dadada",
"darkbluehover",
"darkbluepressed",
"darkred",
"datafields",
"datasource",
"dataviz",
"datepicker",
"datetimepicker",
"dayview",
"Deletet",
"Delgation",
"DENITED",
"Deparmtent",
"departmentids",
"Descirption",
"devprog",
"dfeffc",
"Disp",
"Dispo",
"Dispoitio",
"Dispos",
"Dispositon",
"Dispostion",
"Dispostions",
"dispotypevalidation",
"Docbase",
"Documentum",
"Documetum",
"dont",
"downlaoded",
"draganddrop",
"dragcancel",
"dropdownlist",
"Eamils",
"ECNPCRB",
"Ecns",
"edmx",
"EECN",
"emai",
"emailparams",
"Emergrncy",
"energyblue",
"Eran",
"Esql",
"ETECN",
"EXCELOPENXML",
"existinglocation",
"Expando",
"extrafield",
"fadc",
"fbec",
"fcfdfd",
"fdff",
"fece",
"feeebd",
"ffdc",
"ffdd",
"fieldset",
"FILIPE",
"filtermenu",
"Fldr",
"flintstone",
"FLOWLOCS",
"FMEA",
"ftplib",
"FTPSPN",
"GETDATE",
"gitea",
"globaldocudms",
"glyphicons",
"groupable",
"Guids",
"halflings",
"Hexsize",
"highcontrast",
"Hmac",
"holdsteps",
"hostspecific",
"icenium",
"IECN",
"imagebrowser",
"IMRB",
"Infineon",
"Insertd",
"inverseicons",
"IPCRB",
"ISADMIN",
"islast",
"ISNULL",
"ITAR",
"jquery",
"jqueryval",
"jqwidgets",
"jqxbuttongroup",
"jqxbuttons",
"jqxcalendar",
"jqxchart",
"jqxcheckbox",
"jqxcolorpicker",
"jqxcombobox",
"jqxcore",
"jqxdata",
"jqxdatatable",
"jqxdatetimeinput",
"jqxdocking",
"jqxdockpanel",
"jqxdragdrop",
"jqxdropdownbutton",
"jqxdropdownlist",
"jqxexpander",
"jqxgauge",
"jqxgrid",
"jqxinput",
"jqxknockout",
"jqxlistbox",
"jqxlistmenu",
"jqxmaskedinput",
"jqxmenu",
"jqxnavigationbar",
"jqxnumberinput",
"jqxpanel",
"jqxpasswordinput",
"jqxprogressbar",
"jqxradiobutton",
"jqxrangeselector",
"jqxrating",
"jqxresponse",
"jqxscrollbar",
"jqxscrollview",
"jqxslider",
"jqxsplitter",
"jqxswitchbutton",
"jqxtabs",
"jqxtooltip",
"jqxtouch",
"jqxtree",
"jqxtreegrid",
"jqxtreemap",
"jqxvalidator",
"jqxwindow",
"kendogridcustom",
"kendoui",
"labelelement",
"labelledby",
"Leanred",
"lightgray",
"linkbutton",
"Linq",
"Listdiv",
"listview",
"Lnks",
"localfilename",
"loclist",
"logis",
"logtext",
"loopmis",
"lotdispo",
"LOTDISPSITION",
"Lotfile",
"lotlist",
"lotstatusoption",
"LTRIM",
"MADUREIRA",
"mailrelay",
"MDTM",
"meego",
"meetingid",
"menubutton",
"mesafi",
"metroblack",
"metrodark",
"miliseconds",
"modalview",
"modernizr",
"Modernizr",
"monthview",
"MRBIs",
"Mrbs",
"msecs",
"multipleextended",
"Navigatable",
"nbsp",
"newbase",
"newchange",
"newdi",
"newfilename",
"newsource",
"Newtonsoft",
"notications",
"Notifcation",
"Notifyf",
"NTLM",
"Nullcc",
"numerictextbox",
"objdata",
"OCAP",
"occured",
"odata",
"oldfilename",
"OLHOLD",
"onclick",
"onmousemove",
"OPDESC",
"OPENQUERY",
"Oper",
"operationslist",
"Orginator",
"Originatorname",
"Ouellette",
"Owin",
"pageable",
"Pageable",
"panelbar",
"parentid",
"parminput",
"parms",
"Parms",
"particula",
"pasv",
"PASV",
"PATINDEX",
"PCRB",
"PCRBID",
"pcrvalues",
"pdbonly",
"Preventitive",
"preventivet",
"Prevetative",
"proces",
"Processedl",
"procs",
"productfamilies",
"progess",
"progressbar",
"qrcode",
"Quanityt",
"rangebar",
"Recep",
"Recepient",
"recieved",
"recordlock",
"remotefilename",
"reorderable",
"reportform",
"reportslist",
"reportslistdiv",
"Reqquired",
"Reqs",
"Requiest",
"Responsibles",
"RETR",
"Revisioing",
"Revisioned",
"Revison",
"rgba",
"rkotian",
"RNFR",
"RNTO",
"Roless",
"roundbg",
"RTRIM",
"SAMDB",
"scroller",
"scrollview",
"seleced",
"selectionlog",
"Selectpart",
"sess",
"Sfisharepoint",
"shinyblack",
"showpassword",
"SIGNON",
"simpleparser",
"slddrw",
"sldprt",
"sortasc",
"sortascbutton",
"sortdesc",
"sortdescbutton",
"sortremove",
"sparkline",
"splitview",
"SPNMRB",
"SPNPDB",
"SSRS",
"Sssign",
"Staus",
"stylesheet",
"Submited",
"subrole",
"subroles",
"Succefully",
"Succesfully",
"sucessfully",
"SURP",
"Swashbuckle",
"SWRN",
"tabindex",
"tabstrip",
"Tahoma",
"taskcompleted",
"Tasklist",
"Taveler",
"TECN",
"TECNs",
"TEMIRWAP",
"tempecd",
"tempimplement",
"templabel",
"tempvalue",
"TEMSA",
"timepicker",
"Tobe",
"Toplevel",
"Totrav",
"trainingby",
"Traininglist",
"traininglistdiv",
"transanction",
"Trav",
"Traveller",
"Traverler",
"TRAVLELER",
"Travler",
"TREEVIEW",
"trigerred",
"ttinclude",
"Uhandled",
"Updat",
"Uplaod",
"Upto",
"userevents",
"userids",
"userlist",
"Validatable",
"valueelement",
"Variabls",
"Verdana",
"vgrid",
"viewmodel",
"vsdoc",
"whethere",
"windowsphone",
"Winsock",
"worlflow"
]
}

109
Fab2ApprovalMKLink/.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,109 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "User Secrets Init",
"command": "dotnet",
"type": "process",
"args": [
"user-secrets",
"-p",
"${workspaceFolder}/Fab2ApprovalMKLink.csproj",
"init"
],
"problemMatcher": "$msCompile"
},
{
"label": "User Secrets Set",
"command": "dotnet",
"type": "process",
"args": [
"user-secrets",
"-p",
"${workspaceFolder}/Fab2ApprovalMKLink.csproj",
"set",
"_UserSecretsId",
"f2da5035-aba9-4676-9f8d-d6689f84663d"
],
"problemMatcher": "$msCompile"
},
{
"label": "Format",
"command": "dotnet",
"type": "process",
"args": [
"format",
"--report",
".vscode",
"--verbosity",
"detailed",
"--severity",
"warn"
],
"problemMatcher": "$msCompile"
},
{
"label": "Format-Whitespaces",
"command": "dotnet",
"type": "process",
"args": [
"format",
"whitespace"
],
"problemMatcher": "$msCompile"
},
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Fab2ApprovalMKLink.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/Fab2ApprovalMKLink.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/Fab2ApprovalMKLink.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "Publish AOT",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"-r",
"win-x64",
"-c",
"Release",
"-p:PublishAot=true",
"${workspaceFolder}/Fab2ApprovalMKLink.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
}
]
}

View File

@ -0,0 +1,51 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
<UserSecretsId>f2da5035-aba9-4676-9f8d-d6689f84663d</UserSecretsId>
</PropertyGroup>
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<ImplicitUsings>disable</ImplicitUsings>
<IsPackable>false</IsPackable>
<Nullable>enable</Nullable>
<OutputType>Exe</OutputType>
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'net8.0'">
<DefineConstants>NET8</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Dapper.Contrib" Version="2.0.78" />
<PackageReference Include="Dapper" Version="2.1.44" />
<PackageReference Include="EntityFramework" Version="6.5.1" />
<PackageReference Include="ExcelDataReader" Version="3.7.0" />
<PackageReference Include="jQuery" Version="3.7.1" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.10" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.0" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.2" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging.EventLog" Version="8.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.8" />
<PackageReference Include="NLog" Version="5.2.8" />
<PackageReference Include="Quartz.Extensions.Hosting" Version="3.8.1" />
<PackageReference Include="Quartz" Version="3.8.1" />
<PackageReference Include="SharpZipLib" Version="1.4.2" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.8.1" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
<PackageReference Include="System.DirectoryServices.AccountManagement" Version="9.0.0" />
<PackageReference Include="System.DirectoryServices" Version="9.0.0" />
<PackageReference Include="System.Drawing.Common" Version="8.0.7" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,77 @@
using System;
using System.Diagnostics;
using Fab2ApprovalSystem.Models;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Hosting.WindowsServices;
using Microsoft.Extensions.Logging;
namespace Fab2ApprovalMKLink;
public class Program {
public static int Main(string[] args) {
ILogger<Program>? logger = null;
WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder(args);
_ = webApplicationBuilder.Configuration.AddUserSecrets<Program>();
AppSettings appSettings = AppSettings.Get(webApplicationBuilder.Configuration);
if (string.IsNullOrEmpty(appSettings.Company))
throw new Exception("Company name must have a value!");
if (string.IsNullOrEmpty(appSettings.WorkingDirectoryName))
throw new Exception("Working directory name must have a value!");
try {
_ = webApplicationBuilder.Services.Configure<ApiBehaviorOptions>(options => options.SuppressModelStateInvalidFilter = true);
_ = webApplicationBuilder.Services.AddControllers();
_ = webApplicationBuilder.Services.AddDistributedMemoryCache();
_ = webApplicationBuilder.Services.AddHttpClient();
_ = webApplicationBuilder.Services.AddSingleton(_ => appSettings);
_ = webApplicationBuilder.Services.AddSwaggerGen();
_ = webApplicationBuilder.Services.AddSession(sessionOptions => {
sessionOptions.IdleTimeout = TimeSpan.FromSeconds(2000);
sessionOptions.Cookie.HttpOnly = true;
sessionOptions.Cookie.IsEssential = true;
}
);
if (WindowsServiceHelpers.IsWindowsService()) {
_ = webApplicationBuilder.Services.AddSingleton<IHostLifetime, WindowsServiceLifetime>();
_ = webApplicationBuilder.Logging.AddEventLog(settings => {
#pragma warning disable CA1416
if (string.IsNullOrEmpty(settings.SourceName))
settings.SourceName = webApplicationBuilder.Environment.ApplicationName;
#pragma warning restore
});
}
WebApplication webApplication = webApplicationBuilder.Build();
if (Debugger.IsAttached)
webApplication.Services.GetRequiredService<AppSettings>();
logger = webApplication.Services.GetRequiredService<ILogger<Program>>();
_ = webApplication.UseCors(corsPolicyBuilder => corsPolicyBuilder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
if (!webApplicationBuilder.Environment.IsDevelopment()) {
_ = webApplication.UseExceptionHandler("/Error");
_ = webApplication.UseHttpsRedirection();
_ = webApplication.UseHsts();
} else {
if (string.IsNullOrEmpty(appSettings.URLs)) {
Environment.ExitCode = -1;
webApplication.Lifetime.StopApplication();
}
_ = webApplication.UseSwagger();
_ = webApplication.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Server V1"));
}
_ = webApplication.UseSession();
_ = webApplication.MapControllers();
logger.LogInformation("Starting Web Application");
webApplication.Run();
return 0;
} catch (Exception ex) {
try { logger?.LogCritical(ex, "Host terminated unexpectedly"); } catch (Exception) { }
throw;
}
}
}

View File

@ -1,20 +1,20 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15 # Visual Studio Version 17
VisualStudioVersion = 15.0.27130.2020 VisualStudioVersion = 17.9.34616.47
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fab2ApprovalSystem", "Fab2ApprovalSystem\Fab2ApprovalSystem.csproj", "{AAE52608-4DD1-4732-92BD-CC8915DEC71E}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fab2ApprovalSystem", "Fab2ApprovalSystem\Fab2ApprovalSystem.csproj", "{AAE52608-4DD1-4732-92BD-CC8915DEC71E}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MesaFabApproval.API", "MesaFabApproval.API\MesaFabApproval.API.csproj", "{852E528D-015A-43B5-999D-F281E3359E5E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MesaFabApproval.Shared", "MesaFabApproval.Shared\MesaFabApproval.Shared.csproj", "{2C16014D-B04E-46AF-AB4C-D2691D44A339}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MesaFabApproval.Client", "MesaFabApproval.Client\MesaFabApproval.Client.csproj", "{34D52F44-A81F-4247-8180-16E204824A07}"
ProjectSection(ProjectDependencies) = postProject
{2C16014D-B04E-46AF-AB4C-D2691D44A339} = {2C16014D-B04E-46AF-AB4C-D2691D44A339}
EndProjectSection
EndProject
Global Global
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 2
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccTeamFoundationServer = http://tfs.intra.infineon.com:8080/tfs/manufacturingit
SccLocalPath0 = .
SccProjectUniqueName1 = Fab2ApprovalSystem\\Fab2ApprovalSystem.csproj
SccProjectName1 = Fab2ApprovalSystem
SccLocalPath1 = Fab2ApprovalSystem
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
@ -24,8 +24,23 @@ Global
{AAE52608-4DD1-4732-92BD-CC8915DEC71E}.Debug|Any CPU.Build.0 = Debug|Any CPU {AAE52608-4DD1-4732-92BD-CC8915DEC71E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AAE52608-4DD1-4732-92BD-CC8915DEC71E}.Release|Any CPU.ActiveCfg = Release|Any CPU {AAE52608-4DD1-4732-92BD-CC8915DEC71E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AAE52608-4DD1-4732-92BD-CC8915DEC71E}.Release|Any CPU.Build.0 = Release|Any CPU {AAE52608-4DD1-4732-92BD-CC8915DEC71E}.Release|Any CPU.Build.0 = Release|Any CPU
{852E528D-015A-43B5-999D-F281E3359E5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{852E528D-015A-43B5-999D-F281E3359E5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{852E528D-015A-43B5-999D-F281E3359E5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{852E528D-015A-43B5-999D-F281E3359E5E}.Release|Any CPU.Build.0 = Release|Any CPU
{2C16014D-B04E-46AF-AB4C-D2691D44A339}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2C16014D-B04E-46AF-AB4C-D2691D44A339}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2C16014D-B04E-46AF-AB4C-D2691D44A339}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2C16014D-B04E-46AF-AB4C-D2691D44A339}.Release|Any CPU.Build.0 = Release|Any CPU
{34D52F44-A81F-4247-8180-16E204824A07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34D52F44-A81F-4247-8180-16E204824A07}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34D52F44-A81F-4247-8180-16E204824A07}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34D52F44-A81F-4247-8180-16E204824A07}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A966A184-1FCD-4B6A-978C-5907CC12406B}
EndGlobalSection
EndGlobal EndGlobal

View File

@ -0,0 +1,380 @@
[*.md]
end_of_line = crlf
file_header_template = unset
indent_size = 2
indent_style = space
insert_final_newline = false
root = true
tab_width = 2
[*.csproj]
end_of_line = crlf
file_header_template = unset
indent_size = 2
indent_style = space
insert_final_newline = false
root = true
tab_width = 2
[*.cs]
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_labels = one_less_than_current
csharp_indent_switch_labels = true
csharp_new_line_before_catch = false
csharp_new_line_before_else = false
csharp_new_line_before_finally = false
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = none
csharp_new_line_between_query_expression_clauses = true
csharp_prefer_braces = false
csharp_prefer_qualified_reference = true:error
csharp_prefer_simple_default_expression = true:warning
csharp_prefer_simple_using_statement = true:warning
csharp_prefer_static_local_function = true:warning
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = false
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true
csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true
csharp_style_allow_embedded_statements_on_same_line_experimental = true
csharp_style_conditional_delegate_call = true
csharp_style_deconstructed_variable_declaration = false
csharp_style_expression_bodied_accessors = when_on_single_line:warning
csharp_style_expression_bodied_constructors = when_on_single_line:warning
csharp_style_expression_bodied_indexers = when_on_single_line:warning
csharp_style_expression_bodied_lambdas = when_on_single_line:warning
csharp_style_expression_bodied_local_functions = when_on_single_line:warning
csharp_style_expression_bodied_methods = when_on_single_line:warning
csharp_style_expression_bodied_operators = when_on_single_line:warning
csharp_style_expression_bodied_properties = when_on_single_line:warning
csharp_style_implicit_object_creation_when_type_is_apparent = true:warning
csharp_style_inlined_variable_declaration = false
csharp_style_namespace_declarations = file_scoped:warning
csharp_style_pattern_local_over_anonymous_function = true:warning
csharp_style_pattern_matching_over_as_with_null_check = true:warning
csharp_style_pattern_matching_over_is_with_cast_check = true:warning
csharp_style_prefer_index_operator = true:warning
csharp_style_prefer_not_pattern = true:warning
csharp_style_prefer_null_check_over_type_check = true
csharp_style_prefer_pattern_matching = true:warning
csharp_style_prefer_range_operator = true:warning
csharp_style_prefer_switch_expression = true:warning
csharp_style_throw_expression = true
csharp_style_unused_value_assignment_preference = discard_variable:warning
csharp_style_unused_value_expression_statement_preference = discard_variable:warning
csharp_style_var_elsewhere = false:warning
csharp_style_var_for_built_in_types = false:warning
csharp_style_var_when_type_is_apparent = false:warning
csharp_using_directive_placement = outside_namespace
dotnet_analyzer_diagnostic.category-Design.severity = error
dotnet_analyzer_diagnostic.category-Documentation.severity = error
dotnet_analyzer_diagnostic.category-Globalization.severity = none
dotnet_analyzer_diagnostic.category-Interoperability.severity = error
dotnet_analyzer_diagnostic.category-Maintainability.severity = error
dotnet_analyzer_diagnostic.category-Naming.severity = none
dotnet_analyzer_diagnostic.category-Performance.severity = none
dotnet_analyzer_diagnostic.category-Reliability.severity = error
dotnet_analyzer_diagnostic.category-Security.severity = error
dotnet_analyzer_diagnostic.category-SingleFile.severity = error
dotnet_analyzer_diagnostic.category-Style.severity = error
dotnet_analyzer_diagnostic.category-Usage.severity = error
dotnet_code_quality_unused_parameters = all
dotnet_code_quality_unused_parameters = non_public
dotnet_code_quality.CAXXXX.api_surface = private, internal
dotnet_diagnostic.CA1001.severity = error # CA1001: Types that own disposable fields should be disposable
dotnet_diagnostic.CA1051.severity = error # CA1051: Do not declare visible instance fields
dotnet_diagnostic.CA1511.severity = warning # CA1511: Use 'ArgumentException.ThrowIfNullOrEmpty' instead of explicitly throwing a new exception instance
dotnet_diagnostic.CA1513.severity = warning # Use 'ObjectDisposedException.ThrowIf' instead of explicitly throwing a new exception instance
dotnet_diagnostic.CA1825.severity = warning # CA1825: Avoid zero-length array allocations
dotnet_diagnostic.CA1829.severity = error # CA1829: Use Length/Count property instead of Count() when available
dotnet_diagnostic.CA1834.severity = warning # CA1834: Consider using 'StringBuilder.Append(char)' when applicable
dotnet_diagnostic.CA1860.severity = error # CA1860: Prefer comparing 'Count' to 0 rather than using 'Any()', both for clarity and for performance
dotnet_diagnostic.CA1862.severity = warning # CA1862: Prefer using 'string.Equals(string, StringComparison)' to perform a case-insensitive comparison, but keep in mind that this might cause subtle changes in behavior, so make sure to conduct thorough testing after applying the suggestion, or if culturally sensitive comparison is not required, consider using 'StringComparison.OrdinalIgnoreCase'
dotnet_diagnostic.CA1869.severity = none # CA1869: Avoid creating a new 'JsonSerializerOptions' instance for every serialization operation. Cache and reuse instances instead.
dotnet_diagnostic.CA2201.severity = none # CA2201: Exception type System.NullReferenceException is reserved by the runtime
dotnet_diagnostic.CA2254.severity = none # CA2254: The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])'
dotnet_diagnostic.IDE0001.severity = warning # IDE0001: Simplify name
dotnet_diagnostic.IDE0002.severity = warning # Simplify (member access) - System.Version.Equals("1", "2"); Version.Equals("1", "2");
dotnet_diagnostic.IDE0004.severity = warning # IDE0004: Cast is redundant.
dotnet_diagnostic.IDE0005.severity = error # Using directive is unnecessary
dotnet_diagnostic.IDE0010.severity = none # Add missing cases to switch statement (IDE0010)
dotnet_diagnostic.IDE0028.severity = error # IDE0028: Collection initialization can be simplified
dotnet_diagnostic.IDE0031.severity = warning # Use null propagation (IDE0031)
dotnet_diagnostic.IDE0047.severity = warning # IDE0047: Parentheses can be removed
dotnet_diagnostic.IDE0048.severity = none # Parentheses preferences (IDE0047 and IDE0048)
dotnet_diagnostic.IDE0049.severity = warning # Use language keywords instead of framework type names for type references (IDE0049)
dotnet_diagnostic.IDE0051.severity = error # Private member '' is unused [, ]
dotnet_diagnostic.IDE0058.severity = error # IDE0058: Expression value is never used
dotnet_diagnostic.IDE0060.severity = error # IDE0060: Remove unused parameter
dotnet_diagnostic.IDE0074.severity = warning # IDE0074: Use compound assignment
dotnet_diagnostic.IDE0130.severity = none # Namespace does not match folder structure (IDE0130)
dotnet_diagnostic.IDE0270.severity = warning # IDE0270: Null check can be simplified
dotnet_diagnostic.IDE0290.severity = none # Use primary constructor [Distance]csharp(IDE0290)
dotnet_diagnostic.IDE0300.severity = error # IDE0300: Collection initialization can be simplified
dotnet_diagnostic.IDE0301.severity = error #IDE0301: Collection initialization can be simplified
dotnet_diagnostic.IDE0305.severity = none # IDE0305: Collection initialization can be simplified
dotnet_diagnostic.IDE2000.severity = error # IDE2000: Allow multiple blank lines
dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning
dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.abstract_method_should_be_pascal_case.symbols = abstract_method
dotnet_naming_rule.class_should_be_pascal_case.severity = warning
dotnet_naming_rule.class_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.class_should_be_pascal_case.symbols = class
dotnet_naming_rule.delegate_should_be_pascal_case.severity = warning
dotnet_naming_rule.delegate_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.delegate_should_be_pascal_case.symbols = delegate
dotnet_naming_rule.enum_should_be_pascal_case.severity = warning
dotnet_naming_rule.enum_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.enum_should_be_pascal_case.symbols = enum
dotnet_naming_rule.event_should_be_pascal_case.severity = warning
dotnet_naming_rule.event_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.event_should_be_pascal_case.symbols = event
dotnet_naming_rule.interface_should_be_begins_with_i.severity = warning
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.method_should_be_pascal_case.severity = warning
dotnet_naming_rule.method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.method_should_be_pascal_case.symbols = method
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = warning
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.private_method_should_be_pascal_case.severity = warning
dotnet_naming_rule.private_method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.private_method_should_be_pascal_case.symbols = private_method
dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.severity = warning
dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.style = private_of_internal_field
dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.symbols = private_or_internal_field
dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.severity = warning
dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.style = private_of_internal_field
dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.symbols = private_or_internal_static_field
dotnet_naming_rule.property_should_be_pascal_case.severity = warning
dotnet_naming_rule.property_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.property_should_be_pascal_case.symbols = property
dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.severity = warning
dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.style = private_of_internal_field
dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.symbols = public_or_protected_field
dotnet_naming_rule.static_field_should_be_pascal_case.severity = warning
dotnet_naming_rule.static_field_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.static_field_should_be_pascal_case.symbols = static_field
dotnet_naming_rule.static_method_should_be_pascal_case.severity = warning
dotnet_naming_rule.static_method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.static_method_should_be_pascal_case.symbols = static_method
dotnet_naming_rule.struct_should_be_pascal_case.severity = warning
dotnet_naming_rule.struct_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.struct_should_be_pascal_case.symbols = struct
dotnet_naming_rule.types_should_be_pascal_case.severity = warning
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_style.begins_with_i.capitalization = pascal_case
dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.private_of_internal_field.capitalization = pascal_case
dotnet_naming_style.private_of_internal_field.required_prefix = _
dotnet_naming_style.private_of_internal_field.required_suffix =
dotnet_naming_style.private_of_internal_field.word_separator =
dotnet_naming_symbols.abstract_method.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.abstract_method.applicable_kinds = method
dotnet_naming_symbols.abstract_method.required_modifiers = abstract
dotnet_naming_symbols.class.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.class.applicable_kinds = class
dotnet_naming_symbols.class.required_modifiers =
dotnet_naming_symbols.delegate.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.delegate.applicable_kinds = delegate
dotnet_naming_symbols.delegate.required_modifiers =
dotnet_naming_symbols.enum.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.enum.applicable_kinds = enum
dotnet_naming_symbols.enum.required_modifiers =
dotnet_naming_symbols.event.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.event.applicable_kinds = event
dotnet_naming_symbols.event.required_modifiers =
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.method.applicable_accessibilities = public
dotnet_naming_symbols.method.applicable_kinds = method
dotnet_naming_symbols.method.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.required_modifiers =
dotnet_naming_symbols.private_method.applicable_accessibilities = private
dotnet_naming_symbols.private_method.applicable_kinds = method
dotnet_naming_symbols.private_method.required_modifiers =
dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected
dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field
dotnet_naming_symbols.private_or_internal_field.required_modifiers =
dotnet_naming_symbols.private_or_internal_static_field.applicable_accessibilities = internal, private, private_protected
dotnet_naming_symbols.private_or_internal_static_field.applicable_kinds = field
dotnet_naming_symbols.private_or_internal_static_field.required_modifiers = static
dotnet_naming_symbols.property.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.property.applicable_kinds = property
dotnet_naming_symbols.property.required_modifiers =
dotnet_naming_symbols.public_or_protected_field.applicable_accessibilities = public, protected
dotnet_naming_symbols.public_or_protected_field.applicable_kinds = field
dotnet_naming_symbols.public_or_protected_field.required_modifiers =
dotnet_naming_symbols.static_field.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.static_field.applicable_kinds = field
dotnet_naming_symbols.static_field.required_modifiers = static
dotnet_naming_symbols.static_method.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.static_method.applicable_kinds = method
dotnet_naming_symbols.static_method.required_modifiers = static
dotnet_naming_symbols.struct.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.struct.applicable_kinds = struct
dotnet_naming_symbols.struct.required_modifiers =
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.required_modifiers =
dotnet_remove_unnecessary_suppression_exclusions = 0
dotnet_separate_import_directive_groups = true
dotnet_sort_system_directives_first = true
dotnet_style_allow_multiple_blank_lines_experimental = false:warning
dotnet_style_allow_statement_immediately_after_block_experimental = true
dotnet_style_coalesce_expression = true
dotnet_style_collection_initializer = true:warning
dotnet_style_explicit_tuple_names = true:warning
dotnet_style_namespace_match_folder = true
dotnet_style_null_propagation = true:warning
dotnet_style_object_initializer = true:warning
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_operators = never_if_unnecessary
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
dotnet_style_predefined_type_for_locals_parameters_members = true
dotnet_style_predefined_type_for_member_access = true:warning
dotnet_style_prefer_auto_properties = true:warning
dotnet_style_prefer_compound_assignment = true:warning
dotnet_style_prefer_conditional_expression_over_assignment = false
dotnet_style_prefer_conditional_expression_over_return = false
dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning
dotnet_style_prefer_inferred_tuple_names = true:warning
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning
dotnet_style_prefer_simplified_boolean_expressions = true:warning
dotnet_style_prefer_simplified_interpolation = true
dotnet_style_qualification_for_event = false:error
dotnet_style_qualification_for_field = false
dotnet_style_qualification_for_method = false:error
dotnet_style_qualification_for_property = false:error
dotnet_style_readonly_field = true:warning
dotnet_style_require_accessibility_modifiers = for_non_interface_members
end_of_line = crlf
file_header_template = unset
indent_size = 4
indent_style = space
insert_final_newline = false
root = true
tab_width = 4
# https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1822
# https://github.com/dotnet/aspnetcore/blob/main/.editorconfig
# https://github.com/dotnet/project-system/blob/main/.editorconfig
# Question
csharp_prefer_simple_using_statement = false # Question
csharp_style_expression_bodied_constructors = when_on_single_line:none # Question
csharp_style_expression_bodied_properties = true # Question
csharp_style_implicit_object_creation_when_type_is_apparent = true:warning # Question
csharp_style_pattern_matching_over_as_with_null_check = false # Question
csharp_style_prefer_pattern_matching = false # Question
csharp_style_prefer_range_operator = false # Question
csharp_style_prefer_switch_expression = false # Question
csharp_style_unused_value_assignment_preference = unused_local_variable # Question
csharp_style_unused_value_expression_statement_preference = false # Question
csharp_style_var_elsewhere = false:none # Question
csharp_style_var_for_built_in_types = false:none # Question
csharp_style_var_when_type_is_apparent = false:warning # Question
dotnet_diagnostic.CA1001.severity = none # Question - Types that own disposable fields should be disposable
dotnet_diagnostic.CA1051.severity = none # Question - Do not declare visible instance fields
dotnet_diagnostic.CA1416.severity = none # Question - This call site is reachable on all platforms.
dotnet_diagnostic.CA1510.severity = none # Question - Use
dotnet_diagnostic.CA1834.severity = none # CA1834: Consider using 'StringBuilder.Append(char)' when applicable
dotnet_diagnostic.CA1860.severity = none # Question - Avoid using
dotnet_diagnostic.CA1862.severity = none # Question - Prefer using
dotnet_diagnostic.CA2208.severity = none # Question - Instantiate argument exceptions correctly
dotnet_diagnostic.CA2211.severity = none # Question - Non-constant fields should not be visible
dotnet_diagnostic.CA2249.severity = none # Question - Use
dotnet_diagnostic.CA2253.severity = none # Question - Named placeholders should not be numeric values
dotnet_diagnostic.CS0103.severity = none # Question - The name
dotnet_diagnostic.CS0168.severity = none # Question - The variable
dotnet_diagnostic.CS0219.severity = none # Question - The variable
dotnet_diagnostic.CS0612.severity = none # Question - is obsolete
dotnet_diagnostic.CS0618.severity = none # Question - Compiler Warning (level 2)
dotnet_diagnostic.CS0659.severity = none # Question - Compiler Warning (level 3)
dotnet_diagnostic.CS8019.severity = warning # Question - Unnecessary using directive.
dotnet_diagnostic.CS8600.severity = none # Question - Converting null literal or possible null value to non-nullable type
dotnet_diagnostic.CS8602.severity = none # Question - Dereference of a possibly null reference.
dotnet_diagnostic.CS8603.severity = none # Question - Possible null reference return
dotnet_diagnostic.CS8604.severity = none # Question - Possible null reference argument for parameter.
dotnet_diagnostic.CS8618.severity = none # Question - Non-nullable variable must contain a non-null value when exiting constructor
dotnet_diagnostic.CS8625.severity = none # Question - Cannot convert null literal to non-nullable reference type.
dotnet_diagnostic.CS8629.severity = none # Question - Nullable value type may be null
dotnet_diagnostic.CS8765.severity = none # Question - Nullability of type of parameter
dotnet_diagnostic.IDE0005.severity = none # Question - Remove unnecessary using directives
dotnet_diagnostic.IDE0008.severity = warning # Question - Use explicit type instead of
dotnet_diagnostic.IDE0017.severity = none # Question - Object initialization can be simplified
dotnet_diagnostic.IDE0019.severity = none # Question - Use pattern matching
dotnet_diagnostic.IDE0021.severity = none # Question - Use expression body for constructor
dotnet_diagnostic.IDE0022.severity = none # Question - Use expression body for method
dotnet_diagnostic.IDE0025.severity = none # Question - Use expression body for property
dotnet_diagnostic.IDE0027.severity = none # Question - Use expression body for accessor
dotnet_diagnostic.IDE0028.severity = none # Question - Use collection initializers or expressions
dotnet_diagnostic.IDE0031.severity = none # Question - Null check can be simplified
dotnet_diagnostic.IDE0032.severity = none # Question - Use auto property
dotnet_diagnostic.IDE0037.severity = none # Question - Member name can be simplified
dotnet_diagnostic.IDE0041.severity = none # Question - Null check can be simplified
dotnet_diagnostic.IDE0047.severity = none # Question - Parentheses preferences
dotnet_diagnostic.IDE0049.severity = warning # Question - Name can be simplified
dotnet_diagnostic.IDE0051.severity = none # Question - Remove unused private member
dotnet_diagnostic.IDE0053.severity = none # Question - Use expression body for lambdas
dotnet_diagnostic.IDE0054.severity = none # Question - Use compound assignment
dotnet_diagnostic.IDE0055.severity = none # Question - Formatting rule
dotnet_diagnostic.IDE0057.severity = none # Question - Substring can be simplified
dotnet_diagnostic.IDE0058.severity = none # Question - Remove unnecessary expression value
dotnet_diagnostic.IDE0059.severity = none # Question - Unnecessary assignment of a value to
dotnet_diagnostic.IDE0060.severity = none # Question - Remove unused parameter
dotnet_diagnostic.IDE0063.severity = none # Question - Use simple
dotnet_diagnostic.IDE0065.severity = none # Question -
dotnet_diagnostic.IDE0066.severity = none # Question - Use
dotnet_diagnostic.IDE0078.severity = none # Question - Use pattern matching (may change code meaning)
dotnet_diagnostic.IDE0090.severity = warning # Question - Simplify new expression
dotnet_diagnostic.IDE0160.severity = warning # Question - Use block-scoped namespace
dotnet_diagnostic.IDE0161.severity = warning # Question - Namespace declaration preferences
dotnet_diagnostic.IDE0270.severity = none # Question - Null check can be simplified
dotnet_diagnostic.IDE0300.severity = none # Question - Collection initialization can be simplified
dotnet_diagnostic.IDE1006.severity = none # Question - Use collection expression for builder dotnet_style_prefer_collection_expression
dotnet_style_null_propagation = false # Question
dotnet_style_object_initializer = false # Question
dotnet_style_prefer_auto_properties = false # Question
dotnet_style_allow_statement_immediately_after_block_experimental = true # Question
dotnet_style_prefer_is_null_check_over_reference_equality_method = false # Question
dotnet_style_prefer_inferred_anonymous_type_member_names = false:warning # Question

View File

@ -0,0 +1 @@
[]

30
Fab2ApprovalSystem/.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,30 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net8.0/win-x64/Fab2ApprovalSystem.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
},
{
"type": "node",
"request": "launch",
"name": "node Launch Current Opened File",
"program": "${file}"
}
]
}

424
Fab2ApprovalSystem/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,424 @@
{
"[markdown]": {
"editor.wordWrap": "off"
},
"files.exclude": {
"**/.git": false,
"**/node_modules": true
},
"files.watcherExclude": {
"**/node_modules": true
},
"cSpell.words": [
"abutton",
"accessibilities",
"accodingly",
"acknowledgmentby",
"Acks",
"actionsheet",
"Additonal",
"Addtional",
"againm",
"agendaview",
"Antlr",
"Appover",
"Appprrovers",
"Approvalog",
"Aprovers",
"Aproverslist",
"asax",
"aspnetmvc",
"Assignedto",
"Atachments",
"Attachemnt",
"Attachemnts",
"Attchment",
"auditee",
"Auditee",
"Auditees",
"automaically",
"Autthorized",
"beacuase",
"beforeunload",
"Belguim",
"bfound",
"bgcolor",
"Bies",
"binded",
"blackbackground",
"blackhover",
"blackpressed",
"blueenergy",
"blueopal",
"buttongroup",
"BYMRB",
"bytesgot",
"CAID",
"casection",
"CAXXXX",
"CCPCR",
"CCPCRB",
"cellspacing",
"Cheeso's",
"chkbx",
"Clib",
"colorpicker",
"columnmenu",
"columnsreorder",
"columnsresize",
"comming",
"Containmen",
"Copmments",
"correctiv",
"Correctivet",
"Creat",
"currentd",
"Cyle",
"dadada",
"darkbluehover",
"darkbluepressed",
"darkred",
"datafields",
"datasource",
"dataviz",
"datepicker",
"datetimepicker",
"dayview",
"Deletet",
"Delgation",
"DENITED",
"Deparmtent",
"departmentids",
"Descirption",
"devprog",
"dfeffc",
"Disp",
"Dispo",
"Dispoitio",
"Dispos",
"Dispositon",
"Dispostion",
"Dispostions",
"dispotypevalidation",
"Docbase",
"Documentum",
"Documetum",
"dont",
"downlaoded",
"draganddrop",
"dragcancel",
"dropdownlist",
"Eamils",
"ECNPCRB",
"Ecns",
"edmx",
"EECN",
"emai",
"emailparams",
"Emergrncy",
"energyblue",
"Eran",
"Esql",
"ETECN",
"EXCELOPENXML",
"existinglocation",
"Expando",
"extrafield",
"fadc",
"fbec",
"fcfdfd",
"fdff",
"fece",
"feeebd",
"ffdc",
"ffdd",
"fieldset",
"FILIPE",
"filtermenu",
"Fldr",
"flintstone",
"FLOWLOCS",
"FMEA",
"ftplib",
"FTPSPN",
"GETDATE",
"gitea",
"globaldocudms",
"glyphicons",
"groupable",
"Guids",
"halflings",
"Hexsize",
"highcontrast",
"Hmac",
"holdsteps",
"hostspecific",
"icenium",
"IECN",
"imagebrowser",
"IMRB",
"Infineon",
"Insertd",
"inverseicons",
"IPCRB",
"ISADMIN",
"islast",
"ISNULL",
"ITAR",
"jquery",
"jqueryval",
"jqwidgets",
"jqxbuttongroup",
"jqxbuttons",
"jqxcalendar",
"jqxchart",
"jqxcheckbox",
"jqxcolorpicker",
"jqxcombobox",
"jqxcore",
"jqxdata",
"jqxdatatable",
"jqxdatetimeinput",
"jqxdocking",
"jqxdockpanel",
"jqxdragdrop",
"jqxdropdownbutton",
"jqxdropdownlist",
"jqxexpander",
"jqxgauge",
"jqxgrid",
"jqxinput",
"jqxknockout",
"jqxlistbox",
"jqxlistmenu",
"jqxmaskedinput",
"jqxmenu",
"jqxnavigationbar",
"jqxnumberinput",
"jqxpanel",
"jqxpasswordinput",
"jqxprogressbar",
"jqxradiobutton",
"jqxrangeselector",
"jqxrating",
"jqxresponse",
"jqxscrollbar",
"jqxscrollview",
"jqxslider",
"jqxsplitter",
"jqxswitchbutton",
"jqxtabs",
"jqxtooltip",
"jqxtouch",
"jqxtree",
"jqxtreegrid",
"jqxtreemap",
"jqxvalidator",
"jqxwindow",
"kendogridcustom",
"kendoui",
"labelelement",
"labelledby",
"Leanred",
"lightgray",
"linkbutton",
"Linq",
"Listdiv",
"listview",
"Lnks",
"localfilename",
"loclist",
"logis",
"logtext",
"loopmis",
"lotdispo",
"LOTDISPSITION",
"Lotfile",
"lotlist",
"lotstatusoption",
"LTRIM",
"MADUREIRA",
"mailrelay",
"MDTM",
"meego",
"meetingid",
"menubutton",
"mesafi",
"metroblack",
"metrodark",
"miliseconds",
"modalview",
"modernizr",
"Modernizr",
"monthview",
"MRBIs",
"Mrbs",
"msecs",
"multipleextended",
"Navigatable",
"nbsp",
"newbase",
"newchange",
"newdi",
"newfilename",
"newsource",
"Newtonsoft",
"notications",
"Notifcation",
"Notifyf",
"NTLM",
"Nullcc",
"numerictextbox",
"objdata",
"OCAP",
"occured",
"odata",
"oldfilename",
"OLHOLD",
"onclick",
"onmousemove",
"OPDESC",
"OPENQUERY",
"Oper",
"operationslist",
"Orginator",
"Originatorname",
"Ouellette",
"Owin",
"pageable",
"Pageable",
"panelbar",
"parentid",
"parminput",
"parms",
"Parms",
"particula",
"pasv",
"PASV",
"PATINDEX",
"PCRB",
"PCRBID",
"pcrvalues",
"pdbonly",
"Preventitive",
"preventivet",
"Prevetative",
"proces",
"Processedl",
"procs",
"productfamilies",
"progess",
"progressbar",
"qrcode",
"Quanityt",
"rangebar",
"Recep",
"Recepient",
"recieved",
"recordlock",
"remotefilename",
"reorderable",
"reportform",
"reportslist",
"reportslistdiv",
"Reqquired",
"Reqs",
"Requiest",
"Responsibles",
"RETR",
"Revisioing",
"Revisioned",
"Revison",
"rgba",
"rkotian",
"RNFR",
"RNTO",
"Roless",
"roundbg",
"RTRIM",
"SAMDB",
"scroller",
"scrollview",
"seleced",
"selectionlog",
"Selectpart",
"sess",
"Sfisharepoint",
"shinyblack",
"showpassword",
"SIGNON",
"simpleparser",
"slddrw",
"sldprt",
"sortasc",
"sortascbutton",
"sortdesc",
"sortdescbutton",
"sortremove",
"sparkline",
"splitview",
"SPNMRB",
"SPNPDB",
"SSRS",
"Sssign",
"Staus",
"stylesheet",
"Submited",
"subrole",
"subroles",
"Succefully",
"Succesfully",
"sucessfully",
"SURP",
"Swashbuckle",
"SWRN",
"tabindex",
"tabstrip",
"Tahoma",
"taskcompleted",
"Tasklist",
"Taveler",
"TECN",
"TECNs",
"TEMIRWAP",
"tempecd",
"tempimplement",
"templabel",
"tempvalue",
"TEMSA",
"timepicker",
"Tobe",
"Toplevel",
"Totrav",
"trainingby",
"Traininglist",
"traininglistdiv",
"transanction",
"Trav",
"Traveller",
"Traverler",
"TRAVLELER",
"Travler",
"TREEVIEW",
"trigerred",
"ttinclude",
"Uhandled",
"Updat",
"Uplaod",
"Upto",
"userevents",
"userids",
"userlist",
"Validatable",
"valueelement",
"Variabls",
"Verdana",
"vgrid",
"viewmodel",
"vsdoc",
"whethere",
"windowsphone",
"Winsock",
"worlflow"
]
}

20
Fab2ApprovalSystem/.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,20 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "MSBuild",
"command": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
"type": "process",
"args": [
"/target:Build",
"/restore:True",
"/p:RestoreSources=https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/%3Bhttps://packagemanagement.eu.infineon.com:4430/api/v2/%3Bhttps://api.nuget.org/v3/index.json",
"/detailedsummary",
"/consoleloggerparameters:PerformanceSummary;ErrorsOnly;",
"/property:Configuration=Debug;TargetFrameworkVersion=v4.8",
"Fab2ApprovalSystem.csproj"
],
"problemMatcher": "$msCompile"
}
]
}

View File

@ -0,0 +1,31 @@
#### .NET Coding Conventions ####
# Organize usings
dotnet_separate_import_directive_groups = true
dotnet_sort_system_directives_first = true
# New line preferences
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true
csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false
csharp_style_allow_embedded_statements_on_same_line_experimental = true
#### C# Formatting Rules ####
# New line preferences
csharp_new_line_before_catch = false
csharp_new_line_before_else = false
csharp_new_line_before_finally = false
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = none
csharp_new_line_between_query_expression_clauses = true
####
insert_final_newline = false
csharp_style_namespace_declarations = file_scoped:warning
dotnet_diagnostic.IDE0161.severity = warning # Question - Namespace declaration preferences
dotnet_diagnostic.IDE2000.severity = error # IDE2000: Allow multiple blank lines

View File

@ -1,19 +1,17 @@
using System.Web; using System.Web;
using System.Web.Optimization; using System.Web.Optimization;
namespace Fab2ApprovalSystem namespace Fab2ApprovalSystem;
{
public class BundleConfig public class BundleConfig {
{
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862 // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
public static void RegisterBundles(BundleCollection bundles) public static void RegisterBundles(BundleCollection bundles) {
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include( bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js", "~/Scripts/jquery-{version}.js",
"~/Scripts/jquery-ui-{version}.js") "~/Scripts/jquery-ui-{version}.js")
); );
//bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( // bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
// "~/Scripts/jquery.validate*")); // "~/Scripts/jquery.validate*"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
@ -30,7 +28,6 @@ namespace Fab2ApprovalSystem
"~/Scripts/respond.min.js", "~/Scripts/respond.min.js",
"~/Scripts/common.js")); "~/Scripts/common.js"));
bundles.Add(new ScriptBundle("~/bundles/kendo").Include( bundles.Add(new ScriptBundle("~/bundles/kendo").Include(
"~/Scripts/kendo/kendo.all.min.js", "~/Scripts/kendo/kendo.all.min.js",
"~/Scripts/kendo/kendo.aspnetmvc.min.js")); "~/Scripts/kendo/kendo.aspnetmvc.min.js"));
@ -45,7 +42,6 @@ namespace Fab2ApprovalSystem
"~/Scripts/jqwidgets/styles/jqx.arctic.css", "~/Scripts/jqwidgets/styles/jqx.arctic.css",
"~/Scripts/jqwidgets/styles/jqx.energyblue.css")); "~/Scripts/jqwidgets/styles/jqx.energyblue.css"));
bundles.Add(new ScriptBundle("~/Content/jqw/jq").Include( bundles.Add(new ScriptBundle("~/Content/jqw/jq").Include(
"~/Scripts/jqwidgets/jqxcore.js", "~/Scripts/jqwidgets/jqxcore.js",
"~/Scripts/jqwidgets/jqxdata.js", "~/Scripts/jqwidgets/jqxdata.js",
@ -55,12 +51,8 @@ namespace Fab2ApprovalSystem
"~/Scripts/jqwidgets/jqxpanel.js", "~/Scripts/jqwidgets/jqxpanel.js",
"~/Scripts/jqwidgets/jqxtree.js")); "~/Scripts/jqwidgets/jqxtree.js"));
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/bootstrap.min.css", bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/bootstrap.min.css",
"~/Content/site.css", "~/Content/site.css",
"~/Content/jquery-ui.css")); "~/Content/jquery-ui.css"));
} }
}
} }

View File

@ -1,13 +1,10 @@
using System.Web; using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
namespace Fab2ApprovalSystem namespace Fab2ApprovalSystem;
{
public class FilterConfig public class FilterConfig {
{ public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute()); filters.Add(new HandleErrorAttribute());
} }
}
} }

View File

@ -6,12 +6,10 @@ using System.Web.Http;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Routing; using System.Web.Routing;
namespace Fab2ApprovalSystem namespace Fab2ApprovalSystem;
{
public class RouteConfig public class RouteConfig {
{ public static void RegisterRoutes(RouteCollection routes) {
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute( routes.MapRoute(
@ -22,11 +20,5 @@ namespace Fab2ApprovalSystem
// otherwise MVC generates the wrong form action url // otherwise MVC generates the wrong form action url
defaults: new { controller = "Home", action = "MyTasks", id = UrlParameter.Optional } defaults: new { controller = "Home", action = "MyTasks", id = UrlParameter.Optional }
); );
//routes.MapHttpRoute(
// name: "ApiRoute",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
//);
}
} }
} }

View File

@ -1,38 +1,20 @@
using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity;
using Microsoft.Owin; using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies; using Microsoft.Owin.Security.Cookies;
using Owin; using Owin;
namespace Fab2ApprovalSystem namespace Fab2ApprovalSystem;
{
public partial class Startup public partial class Startup {
{
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app) public void ConfigureAuth(IAppBuilder app) {
{
// Enable the application to use a cookie to store information for the signed in user // Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions app.UseCookieAuthentication(new CookieAuthenticationOptions {
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login") LoginPath = new PathString("/Account/Login")
}); });
// Use a cookie to temporarily store information about a user logging in with a third party login provider // Use a cookie to temporarily store information about a user logging in with a third party login provider
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); // app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
// Uncomment the following lines to enable logging in with third party login providers
//app.UseMicrosoftAccountAuthentication(
// clientId: "",
// clientSecret: "");
//app.UseTwitterAuthentication(
// consumerKey: "",
// consumerSecret: "");
//app.UseFacebookAuthentication(
// appId: "",
// appSecret: "");
//app.UseGoogleAuthentication();
}
} }
} }

View File

@ -1,14 +1,9 @@
using System; using System.Web.Http;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace Fab2ApprovalSystem namespace Fab2ApprovalSystem;
{
public static class WebApiConfig public static class WebApiConfig {
{ public static void Register(HttpConfiguration config) {
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes(); config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute( config.Routes.MapHttpRoute(
@ -17,5 +12,4 @@ namespace Fab2ApprovalSystem
defaults: new { id = RouteParameter.Optional } defaults: new { id = RouteParameter.Optional }
); );
} }
}
} }

View File

@ -0,0 +1,31 @@
#### .NET Coding Conventions ####
# Organize usings
dotnet_separate_import_directive_groups = true
dotnet_sort_system_directives_first = true
# New line preferences
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true
csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false
csharp_style_allow_embedded_statements_on_same_line_experimental = true
#### C# Formatting Rules ####
# New line preferences
csharp_new_line_before_catch = false
csharp_new_line_before_else = false
csharp_new_line_before_finally = false
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = none
csharp_new_line_between_query_expression_clauses = true
####
insert_final_newline = false
csharp_style_namespace_declarations = file_scoped:warning
dotnet_diagnostic.IDE0161.severity = warning # Question - Namespace declaration preferences
dotnet_diagnostic.IDE2000.severity = error # IDE2000: Allow multiple blank lines

View File

@ -1,125 +1,56 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Net;
using System.Net.Http;
using System.Security.Claims; using System.Security.Claims;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Web; using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Security;
using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin.Security; using Microsoft.Owin.Security;
using Fab2ApprovalSystem.Models;
using System.Web.Security;
using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.DMO;
namespace Fab2ApprovalSystem.Controllers using Newtonsoft.Json;
{
[Authorize] namespace Fab2ApprovalSystem.Controllers;
public class AccountController : Controller
{ [Authorize]
public class AccountController : Controller {
private string _apiBaseUrl;
public AccountController() public AccountController()
: this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()))) : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()))) {
{ _apiBaseUrl = Environment.GetEnvironmentVariable("FabApprovalApiBaseUrl") ??
throw new ArgumentNullException("FabApprovalApiBaseUrl environment variable not found");
} }
public AccountController(UserManager<ApplicationUser> userManager) {
public AccountController(UserManager<ApplicationUser> userManager)
{
UserManager = userManager; UserManager = userManager;
} }
public UserManager<ApplicationUser> UserManager { get; private set; } public UserManager<ApplicationUser> UserManager { get; private set; }
//
// GET: /Account/Login // GET: /Account/Login
[AllowAnonymous] [AllowAnonymous]
// try to make the browser refresh the login page every time, to prevent issues with changing usernames and the anti-forgery token validation // try to make the browser refresh the login page every time, to prevent issues with changing usernames and the anti-forgery token validation
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] [OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult Login(string returnUrl) public ActionResult Login(string returnUrl) {
{
ViewBag.ReturnUrl = returnUrl; ViewBag.ReturnUrl = returnUrl;
return View(); return View();
} }
[HttpPost] private void SetSessionParameters(LoginResult loginResult, LoginModel user) {
[AllowAnonymous] Session["JWT"] = loginResult.AuthTokens.JwtToken;
[ValidateAntiForgeryToken] Session["RefreshToken"] = loginResult.AuthTokens.RefreshToken;
public ActionResult Login(LoginModel model, string returnUrl)
{
try
{
//if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
//{
// return RedirectToLocal(returnUrl);
//}
UserAccountDMO userDMO = new UserAccountDMO();
bool isLoginValid;
MembershipProvider domainProvider;
#if(DEBUG)
isLoginValid = true;
#endif
#if (!DEBUG)
bool isIFX = false;
//domainProvider = Membership.Providers["NA_ADMembershipProvider"];
//isLoginValid = domainProvider.ValidateUser(model.LoginID, model.Password);
if (GlobalVars.DBConnection.ToUpper() == "TEST" || GlobalVars.DBConnection.ToUpper() == "QUALITY")
isLoginValid = true;
else
{
isLoginValid = Functions.NA_ADAuthenticate(model.LoginID, model.Password);
if (!isLoginValid)
{
isLoginValid = Functions.IFX_ADAuthenticate(model.LoginID, model.Password);
isIFX = true;
}
}
#endif
if (isLoginValid)
{
//Check ITAR Permissions from AD group
#if(!DEBUG)
try
{
bool hasITARAccess = false;
//========TEMP CODE - NEEDS TO BE DELETED
//Functions.WriteEvent("Using DB for EC Auth for user " + model.LoginID, System.Diagnostics.EventLogEntryType.Information);
//hasITARAccess = userDMO.GetEC_AD_Users(model.LoginID);
//=============END OF TEMP CODE
if (GlobalVars.DBConnection.ToUpper() == "TEST" || GlobalVars.DBConnection.ToUpper() == "QUALITY")
{
hasITARAccess = true;
}
else
{
hasITARAccess = Functions.NA_HasITARAccess(model.LoginID, model.Password);
if (!hasITARAccess) // check the IFX domain
hasITARAccess = Functions.IFX_HasITARAccess(model.LoginID, model.Password);
}
userDMO.UpdateInsertITARAccess(model.LoginID, hasITARAccess ? "1" : "0");
}
catch (Exception ex)
{
ModelState.AddModelError("", "Not a member of the EC Domain" + ex.Message);
return View(model);
}
#endif
LoginModel user = userDMO.GetUser(model.LoginID);
if (user != null)
{
Session[GlobalVars.SESSION_USERID] = user.UserID; Session[GlobalVars.SESSION_USERID] = user.UserID;
Session[GlobalVars.SESSION_USERNAME] = user.FullName; Session[GlobalVars.SESSION_USERNAME] = user.FullName;
Session[GlobalVars.IS_ADMIN] = user.IsAdmin; Session[GlobalVars.IS_ADMIN] = user.IsAdmin;
@ -128,311 +59,196 @@ namespace Fab2ApprovalSystem.Controllers
Session[GlobalVars.CAN_CREATE_PARTS_REQUEST] = user.IsAdmin || PartsRequestController.CanCreatePartsRequest(user.UserID); Session[GlobalVars.CAN_CREATE_PARTS_REQUEST] = user.IsAdmin || PartsRequestController.CanCreatePartsRequest(user.UserID);
FormsAuthentication.SetAuthCookie(user.LoginID, true); FormsAuthentication.SetAuthCookie(user.LoginID, true);
return RedirectToLocal(returnUrl);
} }
else
{ [HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginModel model, string returnUrl) {
try {
bool isLoginValid;
HttpClient httpClient = HttpClientFactory.Create();
httpClient.BaseAddress = new Uri(_apiBaseUrl);
LoginResult loginResult = await AccountDMO.LoginAsync(httpClient, model);
#if (DEBUG)
isLoginValid = true;
#endif
#if (!DEBUG)
bool isIFX = false;
if (GlobalVars.DBConnection.ToUpper() == "TEST" || GlobalVars.DBConnection.ToUpper() == "QUALITY") {
isLoginValid = true;
} else {
isLoginValid = loginResult.IsAuthenticated;
if (isLoginValid)
isIFX = true;
}
#endif
if (isLoginValid) {
UserAccountDMO userDMO = new UserAccountDMO();
LoginModel user = userDMO.GetUser(model.LoginID);
if (user != null) {
SetSessionParameters(loginResult, user);
return RedirectToLocal(returnUrl);
} else {
ModelState.AddModelError("", "The user name does not exist in the DB. Please contact the System Admin"); ModelState.AddModelError("", "The user name does not exist in the DB. Please contact the System Admin");
} }
} else {
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect."); ModelState.AddModelError("", "The user name or password provided is incorrect.");
} }
} } catch (Exception ex) {
Functions.WriteEvent(GlobalVars.AppSettings, @User.Identity.Name + " " + ex.InnerException, System.Diagnostics.EventLogEntryType.Error);
catch (Exception ex)
{
Functions.WriteEvent(@User.Identity.Name + " " + ex.InnerException , System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = 99999, UserID = @User.Identity.Name, DocumentType = "Login", OperationType = "Error", Comments = "Reject - " + ex.Message }); EventLogDMO.Add(new WinEventLog() { IssueID = 99999, UserID = @User.Identity.Name, DocumentType = "Login", OperationType = "Error", Comments = "Reject - " + ex.Message });
ModelState.AddModelError("", ex.Message); ModelState.AddModelError("", ex.Message);
} }
return View(model); return View(model);
// If we got this far, something failed, redisplay form // If we got this far, something failed, redisplay form
}
[HttpPost]
[AllowAnonymous]
public async Task<HttpResponseMessage> ExternalAuthSetup(AuthAttempt authAttempt) {
try {
bool isLoginValid;
HttpClient httpClient = HttpClientFactory.Create();
httpClient.BaseAddress = new Uri(_apiBaseUrl);
LoginResult loginResult = await AccountDMO.ExternalAuthSetupAsync(httpClient, authAttempt);
#if (DEBUG)
isLoginValid = true;
#endif
#if (!DEBUG)
bool isIFX = false;
if (GlobalVars.DBConnection.ToUpper() == "TEST" || GlobalVars.DBConnection.ToUpper() == "QUALITY") {
isLoginValid = true;
} else {
isLoginValid = loginResult.IsAuthenticated;
if (isLoginValid)
isIFX = true;
} }
//// #endif
//// POST: /Account/Login
//[HttpPost]
//[AllowAnonymous]
//[ValidateAntiForgeryToken]
//public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
//{
// if (ModelState.IsValid)
// {
// var user = await UserManager.FindAsync(model.UserName, model.Password);
// if (user != null)
// {
// await SignInAsync(user, model.RememberMe);
// return RedirectToLocal(returnUrl);
// }
// else
// {
// ModelState.AddModelError("", "Invalid username or password.");
// }
// }
// // If we got this far, something failed, redisplay form if (isLoginValid) {
// return View(model); UserAccountDMO userDMO = new UserAccountDMO();
//} LoginModel user = userDMO.GetUser(authAttempt.LoginID);
if (user != null) {
SetSessionParameters(loginResult, user);
return new HttpResponseMessage(HttpStatusCode.OK);
} else {
ModelState.AddModelError("", "The user name does not exist in the DB. Please contact the System Admin");
return new HttpResponseMessage(HttpStatusCode.NotFound);
}
} else {
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return new HttpResponseMessage(HttpStatusCode.Unauthorized);
}
} catch (Exception ex) {
Functions.WriteEvent(GlobalVars.AppSettings, @User.Identity.Name + " " + ex.InnerException, System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = 99999, UserID = @User.Identity.Name, DocumentType = "Login", OperationType = "Error", Comments = "Reject - " + ex.Message });
ModelState.AddModelError("", ex.Message);
return new HttpResponseMessage(HttpStatusCode.InternalServerError);
}
}
//
// GET: /Account/Register // GET: /Account/Register
[AllowAnonymous] [AllowAnonymous]
public ActionResult Register() public ActionResult Register() {
{
return View(); return View();
} }
//
// POST: /Account/Register
//[HttpPost]
//[AllowAnonymous]
//[ValidateAntiForgeryToken]
//public async Task<ActionResult> Register(RegisterViewModel model)
//{
// if (ModelState.IsValid)
// {
// var user = new ApplicationUser() { UserName = model.UserName };
// var result = await UserManager.CreateAsync(user, model.Password);
// if (result.Succeeded)
// {
// await SignInAsync(user, isPersistent: false);
// return RedirectToAction("Index", "Home");
// }
// else
// {
// AddErrors(result);
// }
// }
// // If we got this far, something failed, redisplay form
// return View(model);
//}
//
// POST: /Account/Disassociate // POST: /Account/Disassociate
[HttpPost] [HttpPost]
[ValidateAntiForgeryToken] [ValidateAntiForgeryToken]
public async Task<ActionResult> Disassociate(string loginProvider, string providerKey) public async Task<ActionResult> Disassociate(string loginProvider, string providerKey) {
{
ManageMessageId? message = null; ManageMessageId? message = null;
IdentityResult result = await UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey)); IdentityResult result = await UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
if (result.Succeeded) if (result.Succeeded) {
{
message = ManageMessageId.RemoveLoginSuccess; message = ManageMessageId.RemoveLoginSuccess;
} } else {
else
{
message = ManageMessageId.Error; message = ManageMessageId.Error;
} }
return RedirectToAction("Manage", new { Message = message }); return RedirectToAction("Manage", new { Message = message });
} }
//
// GET: /Account/Manage // GET: /Account/Manage
public ActionResult Manage(ManageMessageId? message) #pragma warning disable IDE0060 // Remove unused parameter
{ public ActionResult Manage(ManageMessageId? message) {
//ViewBag.StatusMessage =
// message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
// : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
// : message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
// : message == ManageMessageId.Error ? "An error has occurred."
// : "";
//ViewBag.HasLocalPassword = HasPassword();
//ViewBag.ReturnUrl = Url.Action("Manage");
return View(); return View();
} }
#pragma warning restore IDE0060 // Remove unused parameter
////
//// POST: /Account/Manage
//[HttpPost]
//[ValidateAntiForgeryToken]
//public async Task<ActionResult> Manage(ManageUserViewModel model)
//{
// bool hasPassword = HasPassword();
// ViewBag.HasLocalPassword = hasPassword;
// ViewBag.ReturnUrl = Url.Action("Manage");
// if (hasPassword)
// {
// if (ModelState.IsValid)
// {
// IdentityResult result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);
// if (result.Succeeded)
// {
// return RedirectToAction("Manage", new { Message = ManageMessageId.ChangePasswordSuccess });
// }
// else
// {
// AddErrors(result);
// }
// }
// }
// else
// {
// // User does not have a password so remove any validation errors caused by a missing OldPassword field
// ModelState state = ModelState["OldPassword"];
// if (state != null)
// {
// state.Errors.Clear();
// }
// if (ModelState.IsValid)
// {
// IdentityResult result = await UserManager.AddPasswordAsync(User.Identity.GetUserId(), model.NewPassword);
// if (result.Succeeded)
// {
// return RedirectToAction("Manage", new { Message = ManageMessageId.SetPasswordSuccess });
// }
// else
// {
// AddErrors(result);
// }
// }
// }
// // If we got this far, something failed, redisplay form
// return View(model);
//}
//
// POST: /Account/ExternalLogin // POST: /Account/ExternalLogin
[HttpPost] [HttpPost]
[AllowAnonymous] [AllowAnonymous]
[ValidateAntiForgeryToken] [ValidateAntiForgeryToken]
public ActionResult ExternalLogin(string provider, string returnUrl) public ActionResult ExternalLogin(string provider, string returnUrl) {
{
// Request a redirect to the external login provider // Request a redirect to the external login provider
return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl })); return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }));
} }
////
//// GET: /Account/ExternalLoginCallback
//[AllowAnonymous]
//public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
//{
// var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
// if (loginInfo == null)
// {
// return RedirectToAction("Login");
// }
// // Sign in the user with this external login provider if the user already has a login
// var user = await UserManager.FindAsync(loginInfo.Login);
// if (user != null)
// {
// await SignInAsync(user, isPersistent: false);
// return RedirectToLocal(returnUrl);
// }
// else
// {
// // If the user does not have an account, then prompt the user to create an account
// ViewBag.ReturnUrl = returnUrl;
// ViewBag.LoginProvider = loginInfo.Login.LoginProvider;
// return View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { UserName = loginInfo.DefaultUserName });
// }
//}
//
// POST: /Account/LinkLogin // POST: /Account/LinkLogin
[HttpPost] [HttpPost]
[ValidateAntiForgeryToken] [ValidateAntiForgeryToken]
public ActionResult LinkLogin(string provider) public ActionResult LinkLogin(string provider) {
{
// Request a redirect to the external login provider to link a login for the current user // Request a redirect to the external login provider to link a login for the current user
return new ChallengeResult(provider, Url.Action("LinkLoginCallback", "Account"), User.Identity.GetUserId()); return new ChallengeResult(provider, Url.Action("LinkLoginCallback", "Account"), User.Identity.GetUserId());
} }
//
// GET: /Account/LinkLoginCallback // GET: /Account/LinkLoginCallback
public async Task<ActionResult> LinkLoginCallback() public async Task<ActionResult> LinkLoginCallback() {
{ ExternalLoginInfo loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(XsrfKey, User.Identity.GetUserId());
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(XsrfKey, User.Identity.GetUserId()); if (loginInfo == null) {
if (loginInfo == null)
{
return RedirectToAction("Manage", new { Message = ManageMessageId.Error }); return RedirectToAction("Manage", new { Message = ManageMessageId.Error });
} }
var result = await UserManager.AddLoginAsync(User.Identity.GetUserId(), loginInfo.Login); IdentityResult result = await UserManager.AddLoginAsync(User.Identity.GetUserId(), loginInfo.Login);
if (result.Succeeded) if (result.Succeeded) {
{
return RedirectToAction("Manage"); return RedirectToAction("Manage");
} }
return RedirectToAction("Manage", new { Message = ManageMessageId.Error }); return RedirectToAction("Manage", new { Message = ManageMessageId.Error });
} }
//
// POST: /Account/ExternalLoginConfirmation
//[HttpPost]
//[AllowAnonymous]
//[ValidateAntiForgeryToken]
//public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
//{
// if (User.Identity.IsAuthenticated)
// {
// return RedirectToAction("Manage");
// }
// if (ModelState.IsValid)
// {
// // Get the information about the user from the external login provider
// var info = await AuthenticationManager.GetExternalLoginInfoAsync();
// if (info == null)
// {
// return View("ExternalLoginFailure");
// }
// var user = new ApplicationUser() { UserName = model.UserName };
// var result = await UserManager.CreateAsync(user);
// if (result.Succeeded)
// {
// result = await UserManager.AddLoginAsync(user.Id, info.Login);
// if (result.Succeeded)
// {
// await SignInAsync(user, isPersistent: false);
// return RedirectToLocal(returnUrl);
// }
// }
// AddErrors(result);
// }
// ViewBag.ReturnUrl = returnUrl;
// return View(model);
//}
//
// POST: /Account/LogOff // POST: /Account/LogOff
[HttpPost] [HttpPost]
[ValidateAntiForgeryToken] [ValidateAntiForgeryToken]
public ActionResult LogOff() public ActionResult LogOff() {
{
//AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
//AuthenticationManager.SignOut();
FormsAuthentication.SignOut(); FormsAuthentication.SignOut();
return RedirectToAction("Login", "Account"); return RedirectToAction("Login", "Account");
} }
//
// GET: /Account/ExternalLoginFailure // GET: /Account/ExternalLoginFailure
[AllowAnonymous] [AllowAnonymous]
public ActionResult ExternalLoginFailure() public ActionResult ExternalLoginFailure() {
{
return View(); return View();
} }
[ChildActionOnly] [ChildActionOnly]
public ActionResult RemoveAccountList() public ActionResult RemoveAccountList() {
{ IList<UserLoginInfo> linkedAccounts = UserManager.GetLogins(User.Identity.GetUserId());
var linkedAccounts = UserManager.GetLogins(User.Identity.GetUserId());
ViewBag.ShowRemoveButton = HasPassword() || linkedAccounts.Count > 1; ViewBag.ShowRemoveButton = HasPassword() || linkedAccounts.Count > 1;
return (ActionResult)PartialView("_RemoveAccountPartial", linkedAccounts); return (ActionResult)PartialView("_RemoveAccountPartial", linkedAccounts);
} }
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing) {
{ if (disposing && UserManager != null) {
if (disposing && UserManager != null)
{
UserManager.Dispose(); UserManager.Dispose();
UserManager = null; UserManager = null;
} }
@ -443,71 +259,52 @@ namespace Fab2ApprovalSystem.Controllers
// Used for XSRF protection when adding external logins // Used for XSRF protection when adding external logins
private const string XsrfKey = "XsrfId"; private const string XsrfKey = "XsrfId";
private IAuthenticationManager AuthenticationManager private IAuthenticationManager AuthenticationManager {
{ get {
get
{
return HttpContext.GetOwinContext().Authentication; return HttpContext.GetOwinContext().Authentication;
} }
} }
private async Task SignInAsync(ApplicationUser user, bool isPersistent) private async Task SignInAsync(ApplicationUser user, bool isPersistent) {
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); ClaimsIdentity identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity); AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
} }
private void AddErrors(IdentityResult result) private void AddErrors(IdentityResult result) {
{ foreach (string error in result.Errors) {
foreach (var error in result.Errors)
{
ModelState.AddModelError("", error); ModelState.AddModelError("", error);
} }
} }
private bool HasPassword() private bool HasPassword() {
{ ApplicationUser user = UserManager.FindById(User.Identity.GetUserId());
var user = UserManager.FindById(User.Identity.GetUserId()); if (user != null) {
if (user != null)
{
return user.PasswordHash != null; return user.PasswordHash != null;
} }
return false; return false;
} }
public enum ManageMessageId public enum ManageMessageId {
{
ChangePasswordSuccess, ChangePasswordSuccess,
SetPasswordSuccess, SetPasswordSuccess,
RemoveLoginSuccess, RemoveLoginSuccess,
Error Error
} }
private ActionResult RedirectToLocal(string returnUrl) private ActionResult RedirectToLocal(string returnUrl) {
{ if (Url.IsLocalUrl(returnUrl)) {
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl); return Redirect(returnUrl);
} } else {
else
{
//return RedirectToAction("HierarchicalDataTest", "Home");
return RedirectToAction("MyTasks", "Home"); return RedirectToAction("MyTasks", "Home");
//return RedirectToAction("Index", "Home", new { tabName = "MyTasks"});
} }
} }
private class ChallengeResult : HttpUnauthorizedResult private class ChallengeResult : HttpUnauthorizedResult {
{ public ChallengeResult(string provider, string redirectUri) : this(provider, redirectUri, null) {
public ChallengeResult(string provider, string redirectUri) : this(provider, redirectUri, null)
{
} }
public ChallengeResult(string provider, string redirectUri, string userId) public ChallengeResult(string provider, string redirectUri, string userId) {
{
LoginProvider = provider; LoginProvider = provider;
RedirectUri = redirectUri; RedirectUri = redirectUri;
UserId = userId; UserId = userId;
@ -517,16 +314,13 @@ namespace Fab2ApprovalSystem.Controllers
public string RedirectUri { get; set; } public string RedirectUri { get; set; }
public string UserId { get; set; } public string UserId { get; set; }
public override void ExecuteResult(ControllerContext context) public override void ExecuteResult(ControllerContext context) {
{ AuthenticationProperties properties = new AuthenticationProperties() { RedirectUri = RedirectUri };
var properties = new AuthenticationProperties() { RedirectUri = RedirectUri }; if (UserId != null) {
if (UserId != null)
{
properties.Dictionary[XsrfKey] = UserId; properties.Dictionary[XsrfKey] = UserId;
} }
context.HttpContext.GetOwinContext().Authentication.Challenge(properties, LoginProvider); context.HttpContext.GetOwinContext().Authentication.Challenge(properties, LoginProvider);
} }
} }
#endregion #endregion
}
} }

View File

@ -1,178 +1,95 @@
using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Models;
using Kendo.Mvc.UI;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Web; using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
using Kendo.Mvc.Extensions;
using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Misc; using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.ViewModels; using Fab2ApprovalSystem.ViewModels;
namespace Fab2ApprovalSystem.Controllers using Kendo.Mvc.Extensions;
{ using Kendo.Mvc.UI;
[Authorize]
[SessionExpireFilter] namespace Fab2ApprovalSystem.Controllers;
public class AdminController : Controller
{ [Authorize]
[SessionExpireFilter]
public class AdminController : Controller {
// GET: /Admin/ // GET: /Admin/
UserAccountDMO userDMO = new UserAccountDMO(); UserAccountDMO userDMO = new UserAccountDMO();
AdminDMO adminDMO = new AdminDMO(); AdminDMO adminDMO = new AdminDMO();
TrainingDMO trainingDMO = new TrainingDMO(); TrainingDMO trainingDMO = new TrainingDMO();
LotDispositionDMO ldDMO = new LotDispositionDMO(); LotDispositionDMO ldDMO = new LotDispositionDMO();
private readonly AppSettings _AppSettings = GlobalVars.AppSettings;
/// <summary> public ActionResult Index() {
/// if ((bool)Session[GlobalVars.IS_ADMIN]) {
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
if ((bool)Session[GlobalVars.IS_ADMIN])
{
var model = userDMO.GetAllUsers(); var model = userDMO.GetAllUsers();
ViewBag.AllActiveUsers = userDMO.GetAllActiveUsers(); ViewBag.AllActiveUsers = userDMO.GetAllActiveUsers();
return View(model); return View(model);
} } else
else
return Content("Not Autthorized"); return Content("Not Autthorized");
} }
/// <summary> public ActionResult AssignRoles() {
/// if ((bool)Session[GlobalVars.IS_ADMIN]) {
/// </summary>
/// <returns></returns>
public ActionResult AssignRoles()
{
if ((bool)Session[GlobalVars.IS_ADMIN])
{
ViewBag.ToplevelNode = GetRoles_SubRolesList(); ViewBag.ToplevelNode = GetRoles_SubRolesList();
return View(); return View();
} } else
else
return Content("Not Autthorized"); return Content("Not Autthorized");
} }
public ActionResult GetAllUserList([DataSourceRequest] DataSourceRequest request) {
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetAllUserList([DataSourceRequest] DataSourceRequest request)
{
IEnumerable<LoginModel> userlist = userDMO.GetAllActiveUsers(); IEnumerable<LoginModel> userlist = userDMO.GetAllActiveUsers();
return Json(userlist, JsonRequestBehavior.AllowGet); return Json(userlist, JsonRequestBehavior.AllowGet);
} }
/// <summary> /// <summary>
/// For the Administration of the Users /// For the Administration of the Users
/// </summary> /// </summary>
/// <param name="request"></param> public ActionResult GetGridUserList([DataSourceRequest] DataSourceRequest request) {
/// <returns></returns>
public ActionResult GetGridUserList([DataSourceRequest] DataSourceRequest request)
{
return Json(userDMO.GetAllUsers().ToDataSourceResult(request)); return Json(userDMO.GetAllUsers().ToDataSourceResult(request));
} }
public JsonResult GetAllUserListBySubRole(int subRole) {
/// <summary>
///
/// </summary>
/// <param name="subRole"></param>
/// <returns></returns>
public JsonResult GetAllUserListBySubRole(int subRole)
{
IEnumerable<LoginModel> userlist = adminDMO.GetAllUsersBySubRole(subRole); IEnumerable<LoginModel> userlist = adminDMO.GetAllUsersBySubRole(subRole);
return Json(userlist, JsonRequestBehavior.AllowGet); return Json(userlist, JsonRequestBehavior.AllowGet);
} }
/// <summary> public JsonResult AllSubRoles(string showInactiveRoles = "") {
/// List<ParentChildModel> newRoles = adminDMO.GetAllSubRoles(showInactiveRoles);
/// </summary>
/// <returns></returns>
public JsonResult AllSubRoles(string showInactiveRoles = "")
{
List<Role> roles = adminDMO.GetSubRoles();
ParentChildModel parent;
ParentChildModel child = new ParentChildModel();
List<ParentChildModel> newRoles = new List<ParentChildModel>();
foreach (Role r in roles)
{
parent = new ParentChildModel();
parent.id = r.RoleID;
parent.parentid = -1;
parent.text = r.RoleName;
parent.value = r.RoleID.ToString();
foreach (SubRole sr in r.SubRoles)
{
if (sr.Inactive)
{
// hide inactive roles unless parameter says otherwise
if (showInactiveRoles.Equals("true") == false)
continue;
}
child = new ParentChildModel();
child.id = sr.SubRoleID;
child.parentid = r.RoleID;
child.text = sr.SubRoleCategoryItem + (sr.Inactive ? " (Inactive)" : "");
child.value = sr.SubRoleID.ToString();
newRoles.Add(child);
}
newRoles.Add(parent);
};
return Json(newRoles, JsonRequestBehavior.AllowGet); return Json(newRoles, JsonRequestBehavior.AllowGet);
} }
public ActionResult GetSubRoleListByUserId([DataSourceRequest] DataSourceRequest request, string userId) public ActionResult GetSubRoleListByUserId([DataSourceRequest] DataSourceRequest request, string userId) {
{
int userIdInt = Convert.ToInt32(userId); int userIdInt = Convert.ToInt32(userId);
return Json(adminDMO.GetUserSubRoles(userIdInt).ToDataSourceResult(request)); return Json(adminDMO.GetUserSubRoles(userIdInt).ToDataSourceResult(request));
} }
//
/// <summary> /// <summary>
///OBSOLETE FUNCTION BELOW FOR THE KENDO TREEVIEW /// OBSOLETE FUNCTION BELOW FOR THE KENDO TREEVIEW
/// </summary> /// </summary>
/// <returns></returns> private IEnumerable<TreeViewItemModel> GetRoles_SubRolesList() {
private IEnumerable<TreeViewItemModel> GetRoles_SubRolesList()
{
List<Role> roles = adminDMO.GetSubRoles(); List<Role> roles = adminDMO.GetSubRoles();
List<TreeViewItemModel> ToplevelNode = new List<TreeViewItemModel>(); List<TreeViewItemModel> ToplevelNode = new List<TreeViewItemModel>();
List<TreeViewItemModel> parentList = new List<TreeViewItemModel>(); List<TreeViewItemModel> parentList = new List<TreeViewItemModel>();
List<TreeViewItemModel> childList = new List<TreeViewItemModel>(); List<TreeViewItemModel> childList = new List<TreeViewItemModel>();
TreeViewItemModel parent = new TreeViewItemModel(); TreeViewItemModel parent = new TreeViewItemModel();
TreeViewItemModel child = new TreeViewItemModel(); TreeViewItemModel child = new TreeViewItemModel();
foreach (Role r in roles) {
foreach (Role r in roles)
{
parent = new TreeViewItemModel(); parent = new TreeViewItemModel();
parent.HasChildren = true; parent.HasChildren = true;
parent.Text = r.RoleName; parent.Text = r.RoleName;
parent.Id = r.RoleID.ToString(); parent.Id = r.RoleID.ToString();
foreach (SubRole sr in r.SubRoles) {
foreach (SubRole sr in r.SubRoles)
{
child = new TreeViewItemModel(); child = new TreeViewItemModel();
child.Text = sr.SubRoleCategoryItem; child.Text = sr.SubRoleCategoryItem;
child.Id = sr.SubRoleID.ToString(); child.Id = sr.SubRoleID.ToString();
@ -183,576 +100,290 @@ namespace Fab2ApprovalSystem.Controllers
ToplevelNode.Add(parent); ToplevelNode.Add(parent);
}; };
return ToplevelNode; return ToplevelNode;
} }
public ActionResult AddUserRoles(int subRole, string users) {
/// <summary>
///
/// </summary>
/// <param name="subRole"></param>
/// <param name="users"></param>
/// <returns></returns>
public ActionResult AddUserRoles(int subRole, string users)
{
adminDMO.AddUserRoles(subRole, users); adminDMO.AddUserRoles(subRole, users);
return View(); return View();
} }
public ActionResult ReplaceUserRoles(int subRole, string users)
{ public ActionResult ReplaceUserRoles(int subRole, string users) {
adminDMO.AddUserRoles(subRole, users); adminDMO.AddUserRoles(subRole, users);
return Content("Success"); return Content("Success");
} }
/// <summary>
///
/// </summary>
/// <param name="subRole"></param>
/// <param name="users"></param>
/// <returns></returns>
public ActionResult DeleteUserRoles(int subRole, string users)
{
public ActionResult DeleteUserRoles(int subRole, string users) {
adminDMO.DeleteUserRoles(subRole, users); adminDMO.DeleteUserRoles(subRole, users);
return Content(""); return Content("");
} }
//
// GET: /Workflow/Details/5 // GET: /Workflow/Details/5
public ActionResult Details(int id) public ActionResult Details(int id) {
{
return View(); return View();
} }
//
// GET: /Workflow/Create // GET: /Workflow/Create
public ActionResult Create() public ActionResult Create() {
{
return View(); return View();
} }
//
// POST: /Workflow/Create // POST: /Workflow/Create
[HttpPost] [HttpPost]
public ActionResult Create(FormCollection collection) public ActionResult Create(FormCollection collection) {
{ try {
try
{
// TODO: Add insert logic here // TODO: Add insert logic here
return RedirectToAction("Index"); return RedirectToAction("Index");
} } catch {
catch
{
return View(); return View();
} }
} }
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="model"></param>
/// <returns></returns>
[AcceptVerbs(HttpVerbs.Post)] [AcceptVerbs(HttpVerbs.Post)]
public ActionResult BatchUpdateUser([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<LoginModel> model) public ActionResult BatchUpdateUser([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<LoginModel> model) {
{
//if (model != null && ModelState.IsValid)
//{
// userDMO.UpdateUser(model);
//}
return Json(new[] { model }.ToDataSourceResult(request, ModelState)); return Json(new[] { model }.ToDataSourceResult(request, ModelState));
} }
[AcceptVerbs(HttpVerbs.Post)] [AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateUser([DataSourceRequest] DataSourceRequest request, LoginModel model) public ActionResult UpdateUser([DataSourceRequest] DataSourceRequest request, LoginModel model) {
{ if (model != null && ModelState.IsValid) {
if (model != null && ModelState.IsValid)
{
userDMO.UpdateUser(model); userDMO.UpdateUser(model);
} }
return Json(new[] { model }.ToDataSourceResult(request, ModelState)); return Json(new[] { model }.ToDataSourceResult(request, ModelState));
} }
public ActionResult DeleteUser(string userId) {
///// <summary> LoginModel loginModel = userDMO.GetUserByID(Convert.ToInt32(userId));
///// adminDMO.DeleteUser(userDMO, trainingDMO, loginModel);
///// </summary>
///// <param name="request"></param>
///// <param name="model"></param>
///// <returns></returns>
//[AcceptVerbs(HttpVerbs.Post)]
//public ActionResult DeleteUser([DataSourceRequest] DataSourceRequest request, LoginModel model)
//{
// if (model != null && ModelState.IsValid)
// {
// userDMO.DeleteUser(model);
// //Remove open trainings
// //Get a list of all user assigned trainings.
// List<TrainingAssignment> trainingAssignments = trainingDMO.GetTrainingAssignmentsByUserID(model.UserID);
// //Go Through that list.
// foreach(var trainingAssignment in trainingAssignments)
// {
// //Delete Any document acknowledgements.
// trainingDMO.DeleteTrainingDocAck(trainingAssignment.ID);
// //Delete the training assignment itself
// trainingDMO.DeleteTrainingAssignment(trainingAssignment.ID);
// //Check the parent Training task to set to to complete if applicable.
// if (trainingDMO.CheckTrainingStatus(trainingAssignment.ID))
// {
// int TrainingID = trainingDMO.GetTrainingIdByAssignment(trainingAssignment.TrainingID);
// //Set Training status to complete
// trainingDMO.UpdateTrainingStatus(TrainingID);
// }
// }
// //Remove user from any Training Groups
// adminDMO.DeleteUserFromAllTrainingGroups(model.UserID);
// //Remove User from training report notifications
// adminDMO.TrainingReportDeleteUser(model.UserID);
// //Remove user from TECN Expiration Notifications
// adminDMO.TECNExpirationDeleteUser(model.UserID);
// //Get user subroles
// List<UserSubRoles> userSubRoles = adminDMO.GetUserSubRoles(model.UserID);
// //Delete user from any subroles
// foreach (var userSubRole in userSubRoles)
// {
// DeleteUserRoles(userSubRole.SubRoleID, model.UserID.ToString());
// }
// }
// return Json(new[] { model }.ToDataSourceResult(request, ModelState));
//}
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="model"></param>
/// <returns></returns>
public ActionResult DeleteUser(string userId)
{
LoginModel model = userDMO.GetUserByID(Convert.ToInt32(userId));
if (model != null)
{
userDMO.DeleteUser(model);
//Remove open trainings
//Get a list of all user assigned trainings.
List<TrainingAssignment> trainingAssignments = trainingDMO.GetTrainingAssignmentsByUserID(model.UserID);
//Go Through that list.
foreach (var trainingAssignment in trainingAssignments)
{
//Delete Any document acknowledgements.
trainingDMO.DeleteTrainingDocAck(trainingAssignment.ID);
//Delete the training assignment itself
trainingDMO.DeleteTrainingAssignment(trainingAssignment.ID);
//Check the parent Training task to set to to complete if applicable.
if (trainingDMO.CheckTrainingStatus(trainingAssignment.ID))
{
int TrainingID = trainingAssignment.TrainingID;
//Set Training status to complete
trainingDMO.UpdateTrainingStatus(TrainingID);
}
}
//Remove user from any Training Groups
adminDMO.DeleteUserFromAllTrainingGroups(model.UserID);
//Remove User from training report notifications
adminDMO.TrainingReportDeleteUser(model.UserID);
//Remove user from TECN Expiration Notifications
adminDMO.TECNExpirationDeleteUser(model.UserID);
//Get user subroles
List<UserSubRoles> userSubRoles = adminDMO.GetUserSubRoles(model.UserID);
//Delete user from any subroles
foreach (var userSubRole in userSubRoles)
{
DeleteUserRoles(userSubRole.SubRoleID, model.UserID.ToString());
}
}
return Content("Success"); return Content("Success");
} }
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="model"></param>
/// <returns></returns>
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult InsertUser([DataSourceRequest] DataSourceRequest request, LoginModel model)
{
try [AcceptVerbs(HttpVerbs.Post)]
{ public ActionResult InsertUser([DataSourceRequest] DataSourceRequest request, LoginModel model) {
if (model != null && ModelState.IsValid) try {
{ if (model != null && ModelState.IsValid) {
userDMO.InsertUser(model); userDMO.InsertUser(model);
} }
} } catch (Exception ex) {
catch (Exception ex)
{
// TODO // TODO
throw new Exception(ex.Message); throw new Exception(ex.Message);
} }
return Json(new[] { model }.ToDataSourceResult(request, ModelState)); return Json(new[] { model }.ToDataSourceResult(request, ModelState));
} }
public ActionResult EnableOOOStatus(int oooUserID, int delegatedTo, DateTime startDate, DateTime endDate) {
/// <summary>
///
/// </summary>
/// <returns></returns>
public ActionResult EnableOOOStatus(int oooUserID, int delegatedTo, DateTime startDate, DateTime endDate)
{
int returnValue = MiscDMO.EnableOOOStatus(oooUserID, delegatedTo, startDate, endDate); int returnValue = MiscDMO.EnableOOOStatus(oooUserID, delegatedTo, startDate, endDate);
if (returnValue == 3) // the delegator is already a delegator to someone else if (returnValue == 3) // the delegator is already a delegator to someone else
{ {
return Content("3"); return Content("3");
} } else
else
return Content(""); return Content("");
// TODO - Send an email to the OOO person and to the Delegated person // TODO - Send an email to the OOO person and to the Delegated person
//return View();
} }
public void ExpireOOOStatus(int oooUserID) {
/// <summary>
///
/// </summary>
/// <param name="oooUserID"></param>
public void ExpireOOOStatus(int oooUserID)
{
MiscDMO.ExpireOOOStatus(oooUserID); MiscDMO.ExpireOOOStatus(oooUserID);
// TODO - Does it need to send an email // TODO - Does it need to send an email
} }
public ActionResult ManageTrainingGroups()
{ public ActionResult ManageTrainingGroups() {
//List<TrainingGroup> allGroups = GetTrainingGroups(); if ((bool)Session[GlobalVars.IS_ADMIN]) {
//return View(allGroups);
if ((bool)Session[GlobalVars.IS_ADMIN])
{
ViewBag.AllGroups = GetTrainingGroups(); ViewBag.AllGroups = GetTrainingGroups();
return View(); return View();
} } else
else
return Content("Not Autthorized"); return Content("Not Autthorized");
} }
public void RefreshGroups()
{ public void RefreshGroups() {
ViewBag.AllGroups = GetTrainingGroups(); ViewBag.AllGroups = GetTrainingGroups();
} }
public ActionResult TrainingGroups()
{ public ActionResult TrainingGroups() {
List<TrainingGroup> trainingGroups = adminDMO.GetTrainingGroups(); List<TrainingGroup> trainingGroups = adminDMO.GetTrainingGroups();
return PartialView(trainingGroups); return PartialView(trainingGroups);
} }
public List<TrainingGroup> GetTrainingGroups()
{
public List<TrainingGroup> GetTrainingGroups() {
List<TrainingGroup> TrainingGroups = adminDMO.GetTrainingGroups(); List<TrainingGroup> TrainingGroups = adminDMO.GetTrainingGroups();
//List<TreeViewItemModel> ToplevelNode = new List<TreeViewItemModel>();
//List<TreeViewItemModel> parentList = new List<TreeViewItemModel>();
//List<TreeViewItemModel> childList = new List<TreeViewItemModel>();
//TreeViewItemModel parent = new TreeViewItemModel();
//TreeViewItemModel child = new TreeViewItemModel();
//parent = new TreeViewItemModel();
//parent.HasChildren = true;
//parent.Text = "Training Groups";
//foreach (TrainingGroup group in TrainingGroups)
//{
// child = new TreeViewItemModel();
// child.Text = group.TrainingGroupName;
// child.Id = group.TrainingGroupID.ToString();
// parent.Items.Add(child);
//}
//ToplevelNode.Add(parent);
////foreach (Role r in roles)
////{
//// parent = new TreeViewItemModel();
//// parent.HasChildren = true;
//// parent.Text = r.RoleName;
//// parent.Id = r.RoleID.ToString();
//// foreach (SubRole sr in r.SubRoles)
//// {
//// child = new TreeViewItemModel();
//// child.Text = sr.SubRoleCategoryItem;
//// child.Id = sr.SubRoleID.ToString();
//// parent.Items.Add(child);
//// }
//// ToplevelNode.Add(parent);
////};
return TrainingGroups; return TrainingGroups;
} }
public ActionResult GetTaskListByUser([DataSourceRequest]DataSourceRequest request, string userId)
{ public ActionResult GetTaskListByUser([DataSourceRequest] DataSourceRequest request, string userId) {
IEnumerable<IssuesViewModel> data = ldDMO.GetTaskList(Convert.ToInt32(userId)); IEnumerable<IssuesViewModel> data = ldDMO.GetTaskList(Convert.ToInt32(userId));
data = from a in data where a.PendingApprovers != null select a; data = from a in data where a.PendingApprovers != null select a;
return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
} }
public ActionResult GetOpenActionItemsByUser([DataSourceRequest]DataSourceRequest request, string userId)
{ public ActionResult GetOpenActionItemsByUser([DataSourceRequest] DataSourceRequest request, string userId) {
IEnumerable<OpenActionItemViewModel> data = ldDMO.GetMyOpenActionItems(Convert.ToInt32(userId)); IEnumerable<OpenActionItemViewModel> data = ldDMO.GetMyOpenActionItems(Convert.ToInt32(userId));
return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
} }
public ActionResult AddNewTrainingGroup(string groupName)
{ public ActionResult AddNewTrainingGroup(string groupName) {
try try {
{
adminDMO.AddNewTrainingGroup(groupName); adminDMO.AddNewTrainingGroup(groupName);
return Json(new {test = "Succesfully saved" }); return Json(new { test = "Succesfully saved" });
} } catch {
catch
{
return Content("Unable to Save Group", "application/json"); return Content("Unable to Save Group", "application/json");
} }
} }
public ActionResult DeleteTrainingGroup(int groupID)
{ public ActionResult DeleteTrainingGroup(int groupID) {
try try {
{
adminDMO.DeleteTrainingGroup(groupID); adminDMO.DeleteTrainingGroup(groupID);
return Json(new { response = "Successfully Deleted" }); return Json(new { response = "Successfully Deleted" });
} } catch {
catch
{
return Json(new { response = "Unsuccessfully Deleted" }); return Json(new { response = "Unsuccessfully Deleted" });
} }
} }
public ActionResult ViewTrainingGroup(int TrainingGroupID)
{ public ActionResult ViewTrainingGroup(int TrainingGroupID) {
ViewBag.GroupID = TrainingGroupID; ViewBag.GroupID = TrainingGroupID;
return View(); return View();
} }
public ActionResult TrainingGroupPartial(int TrainingGroupID)
{ public ActionResult TrainingGroupPartial(int TrainingGroupID) {
ViewBag.AllUsers = userDMO.GetAllActiveUsers(); ViewBag.AllUsers = userDMO.GetAllActiveUsers();
ViewBag.TrainingGroupId = TrainingGroupID; ViewBag.TrainingGroupId = TrainingGroupID;
List<TrainingGroupMember> trainingGroupMembers = adminDMO.GetTrainingGroupMembers(TrainingGroupID); List<TrainingGroupMember> trainingGroupMembers = adminDMO.GetTrainingGroupMembers(TrainingGroupID);
return PartialView(trainingGroupMembers); return PartialView(trainingGroupMembers);
} }
public ActionResult AddToGroup(int userId, int groupId)
{ public ActionResult AddToGroup(int userId, int groupId) {
try try {
{
adminDMO.AddUserToGroup(userId, groupId); adminDMO.AddUserToGroup(userId, groupId);
} } catch (Exception e) {
catch(Exception e)
{
return Json(new { test = e.Message }); return Json(new { test = e.Message });
} }
return Json(new { test = "Succesfully saved" }); return Json(new { test = "Succesfully saved" });
} }
public ActionResult DeleteFromGroup(int userId, int groupId)
{ public ActionResult DeleteFromGroup(int userId, int groupId) {
try try {
{
adminDMO.DeleteFromGroup(userId, groupId); adminDMO.DeleteFromGroup(userId, groupId);
} } catch (Exception e) {
catch (Exception e)
{
return Json(new { test = e.Message }); return Json(new { test = e.Message });
} }
return Json(new { test = "Succesfully removed" }); return Json(new { test = "Succesfully removed" });
} }
public ActionResult JobSchedulerConfiguration()
{
if ((bool)Session[GlobalVars.IS_ADMIN])
{
public ActionResult JobSchedulerConfiguration() {
if ((bool)Session[GlobalVars.IS_ADMIN]) {
return View(); return View();
} } else
else
return Content("Not Autthorized"); return Content("Not Autthorized");
} }
public ActionResult TrainingReportConfig()
{ public ActionResult TrainingReportConfig() {
ViewBag.AllUsers = userDMO.GetAllActiveUsers(); ViewBag.AllUsers = userDMO.GetAllActiveUsers();
List<TrainingReportUser> currentTrainingReportUsersIds = adminDMO.GetTrainingReportUsers(); List<TrainingReportUser> currentTrainingReportUsersIds = adminDMO.GetTrainingReportUsers();
List<LoginModel> currentTrainingReportUsers = new List<LoginModel>(); List<LoginModel> currentTrainingReportUsers = new List<LoginModel>();
foreach (TrainingReportUser id in currentTrainingReportUsersIds) foreach (TrainingReportUser id in currentTrainingReportUsersIds) {
{
currentTrainingReportUsers.Add(userDMO.GetUserByID(id.UserId)); currentTrainingReportUsers.Add(userDMO.GetUserByID(id.UserId));
} }
ViewBag.CurrentReportUsers = currentTrainingReportUsers; ViewBag.CurrentReportUsers = currentTrainingReportUsers;
return PartialView(); return PartialView();
} }
public ActionResult TECNNotificationConfig()
{ public ActionResult TECNNotificationConfig() {
ViewBag.AllUsers = userDMO.GetAllActiveUsers(); ViewBag.AllUsers = userDMO.GetAllActiveUsers();
List<TECNNotificationsUser> currentTECNNotificationUsersIds = adminDMO.GetTECNNotificationUsers(); List<TECNNotificationsUser> currentTECNNotificationUsersIds = adminDMO.GetTECNNotificationUsers();
List<LoginModel> currentTECNNotificationUsers = new List<LoginModel>(); List<LoginModel> currentTECNNotificationUsers = new List<LoginModel>();
foreach (TECNNotificationsUser id in currentTECNNotificationUsersIds) foreach (TECNNotificationsUser id in currentTECNNotificationUsersIds) {
{
currentTECNNotificationUsers.Add(userDMO.GetUserByID(id.UserId)); currentTECNNotificationUsers.Add(userDMO.GetUserByID(id.UserId));
} }
ViewBag.CurrentReportUsers = currentTECNNotificationUsers; ViewBag.CurrentReportUsers = currentTECNNotificationUsers;
return PartialView(); return PartialView();
} }
public ActionResult AddToTrainingReport(int userId)
{ public ActionResult AddToTrainingReport(int userId) {
if ((bool)Session[GlobalVars.IS_ADMIN]) if ((bool)Session[GlobalVars.IS_ADMIN]) {
{ // Check to make sure user is not apart of the group already
//Check to make sure user is not apart of the group already
bool userExists = false; bool userExists = false;
//bool userValid = true;
List<TrainingReportUser> existingUsers = adminDMO.GetTrainingReportUsers(); List<TrainingReportUser> existingUsers = adminDMO.GetTrainingReportUsers();
foreach (var item in existingUsers) foreach (var item in existingUsers) {
{ if (item.UserId == userId) {
if (item.UserId == userId)
{
userExists = true; userExists = true;
} }
} }
//Check if user is valid // Check if user is valid
var validUser = userDMO.GetUserByID(userId); var validUser = userDMO.GetUserByID(userId);
//Add to group // Add to group
if (!userExists && validUser != null) if (!userExists && validUser != null) {
{
adminDMO.TrainingReportAddUser(userId); adminDMO.TrainingReportAddUser(userId);
return Json("Success Added"); return Json("Success Added");
} } else {
else
{
return Content("User either doesn't exist OR is already added"); return Content("User either doesn't exist OR is already added");
} }
} } else {
else
{
return Content("Not Autthorized"); return Content("Not Autthorized");
} }
} }
public ActionResult AddToTECNNotification(int userId)
{ public ActionResult AddToTECNNotification(int userId) {
if ((bool)Session[GlobalVars.IS_ADMIN]) if ((bool)Session[GlobalVars.IS_ADMIN]) {
{ // Check to make sure user is not apart of the group already
//Check to make sure user is not apart of the group already
bool userExists = false; bool userExists = false;
//bool userValid = true;
List<TECNNotificationsUser> existingUsers = adminDMO.GetTECNNotificationUsers(); List<TECNNotificationsUser> existingUsers = adminDMO.GetTECNNotificationUsers();
foreach (var item in existingUsers) foreach (var item in existingUsers) {
{ if (item.UserId == userId) {
if (item.UserId == userId)
{
userExists = true; userExists = true;
} }
} }
//Check if user is valid // Check if user is valid
var validUser = userDMO.GetUserByID(userId); var validUser = userDMO.GetUserByID(userId);
//Add to group // Add to group
if (!userExists && validUser != null) if (!userExists && validUser != null) {
{ try {
try
{
adminDMO.TECNExpirationAddUser(userId); adminDMO.TECNExpirationAddUser(userId);
} } catch (Exception e) {
catch (Exception e)
{
string exception = e.Message; string exception = e.Message;
return Content(exception); return Content(exception);
} }
return Json("Success Added"); return Json("Success Added");
} } else {
else
{
return Content("User either doesn't exist OR is already added"); return Content("User either doesn't exist OR is already added");
} }
} } else {
else
{
return Content("Not Autthorized"); return Content("Not Autthorized");
} }
} }
public ActionResult DeleteFromTrainingReport(int userId)
{ public ActionResult DeleteFromTrainingReport(int userId) {
if ((bool)Session[GlobalVars.IS_ADMIN]) if ((bool)Session[GlobalVars.IS_ADMIN]) {
{ try {
try
{
adminDMO.TrainingReportDeleteUser(userId); adminDMO.TrainingReportDeleteUser(userId);
return Content("Successfully Deleted"); return Content("Successfully Deleted");
} } catch {
catch
{
return Content("Error while trying to delete"); return Content("Error while trying to delete");
} }
} } else {
else
{
return Content("Not Autthorized"); return Content("Not Autthorized");
} }
} }
public ActionResult DeleteFromTECNNotification(int userId)
{ public ActionResult DeleteFromTECNNotification(int userId) {
if ((bool)Session[GlobalVars.IS_ADMIN]) if ((bool)Session[GlobalVars.IS_ADMIN]) {
{ try {
try
{
adminDMO.TECNExpirationDeleteUser(userId); adminDMO.TECNExpirationDeleteUser(userId);
return Content("Successfully Deleted"); return Content("Successfully Deleted");
} } catch {
catch
{
return Content("Error while trying to delete"); return Content("Error while trying to delete");
} }
} } else {
else
{
return Content("Not Autthorized"); return Content("Not Autthorized");
} }
} }
}
} }

View File

@ -1,215 +1,117 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Configuration;
using System.Linq; using System.Linq;
using System.Web; using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.DMO; using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Misc; using Fab2ApprovalSystem.Misc;
using System.IO; using Fab2ApprovalSystem.Models;
using System.Configuration;
using Fab2ApprovalSystem.Utilities; using Fab2ApprovalSystem.Utilities;
namespace Fab2ApprovalSystem.Controllers using Kendo.Mvc.Extensions;
{ using Kendo.Mvc.UI;
[Authorize]
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] namespace Fab2ApprovalSystem.Controllers;
[SessionExpireFilter]
public class AuditController : Controller [Authorize]
{ [OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
AuditDMO auditDMO = new AuditDMO(); [SessionExpireFilter]
public class AuditController : Controller {
AuditDMO auditDMO = new AuditDMO(GlobalVars.AppSettings);
CorrectiveActionDMO caDMO = new CorrectiveActionDMO(); CorrectiveActionDMO caDMO = new CorrectiveActionDMO();
UserUtilities adUsers = new UserUtilities(); private readonly AppSettings _AppSettings = GlobalVars.AppSettings;
// GET: Audit // GET: Audit
public ActionResult Index() public ActionResult Index() {
{
return View(); return View();
} }
/// <summary> public ActionResult Create() {
///
/// </summary>
/// <returns></returns>
public ActionResult Create()
{
Audit audit = new Audit(); Audit audit = new Audit();
try try {
{
// TODO: Add insert logic here // TODO: Add insert logic here
audit.OriginatorID = (int)Session[GlobalVars.SESSION_USERID]; audit.OriginatorID = (int)Session[GlobalVars.SESSION_USERID];
auditDMO.InsertAudit(audit); auditDMO.InsertAudit(audit);
return RedirectToAction("Edit", new { issueID = audit.AuditNo }); return RedirectToAction("Edit", new { issueID = audit.AuditNo });
} } catch (Exception e) {
catch (Exception e)
{
string detailedException = ""; string detailedException = "";
try try {
{
detailedException = e.InnerException.ToString(); detailedException = e.InnerException.ToString();
} } catch {
catch
{
detailedException = e.Message; detailedException = e.Message;
} }
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + audit.AuditNo.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString(); string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + audit.AuditNo.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
Functions.WriteEvent(@User.Identity.Name + "\r\n SubmitDocument - Audit\r\n" + audit.AuditNo.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error); Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n SubmitDocument - Audit\r\n" + audit.AuditNo.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = audit.AuditNo, UserID = @User.Identity.Name, DocumentType = "Audit", OperationType = "Error", Comments = "SubmitDocument - " + exceptionString }); EventLogDMO.Add(new WinEventLog() { IssueID = audit.AuditNo, UserID = @User.Identity.Name, DocumentType = "Audit", OperationType = "Error", Comments = "SubmitDocument - " + exceptionString });
throw new Exception(e.Message); throw new Exception(e.Message);
} }
} }
public ActionResult Edit(int issueID) {
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
/// <returns></returns>
public ActionResult Edit(int issueID)
{
int isITARCompliant = 1; int isITARCompliant = 1;
Audit audit = new Audit(); Audit audit = new Audit();
try try {
{ bool isAdmin = (bool)Session[GlobalVars.IS_ADMIN];
List<int> userList = auditDMO.Get8DQA(); int userId = (int)Session[GlobalVars.SESSION_USERID];
ViewBag.MesaUsers = adUsers.GetMesaUsers(); AuditEdit auditEdit = auditDMO.GetAuditEdit(issueID, audit, isAdmin, userId);
int QAs = userList.Find(delegate(int al) { return al == (int)Session[GlobalVars.SESSION_USERID]; }); if (auditEdit.RedirectToAction)
ViewBag.Is8DQA = "false";
if (QAs != 0)
{
ViewBag.Is8DQA = "true";
}
audit = auditDMO.GetAuditItem(issueID, (int)Session[GlobalVars.SESSION_USERID]);
//transform audit users from string to list, delimited by a comma.
if(audit.Auditees == null || !audit.Auditees.Contains(","))
{
ViewBag.AuditeeNames = audit.Auditees;
}
else
{
string[] auditeeNames = audit.Auditees.Split(',');
ViewBag.AuditeeNames = auditeeNames.ToList();
}
ViewBag.IsSubmitter = false;
if(audit.OriginatorID == (int)Session[GlobalVars.SESSION_USERID])
{
ViewBag.IsSubmitter = true;
}
if((bool)Session[GlobalVars.IS_ADMIN] != true)
{
ViewBag.IsAdmin = false;
}
else
{
ViewBag.IsAdmin = true;
}
if ((audit.RecordLockIndicator && audit.RecordLockedBy != (int)Session[GlobalVars.SESSION_USERID])
|| audit.AuditStatus != 0 ) //open
{
return RedirectToAction("ReadOnlyAudit", new { auditNo = audit.AuditNo }); return RedirectToAction("ReadOnlyAudit", new { auditNo = audit.AuditNo });
} ViewBag.AuditAreaList = auditEdit.AuditAreaList;
if (ViewBag.IsAdmin == false && ViewBag.IsSubmitter == false) ViewBag.AuditeeNames = auditEdit.AuditeeNames;
{ ViewBag.AuditFindingCategoryList = auditEdit.AuditFindingCategoryList;
return RedirectToAction("ReadOnlyAudit", new { auditNo = audit.AuditNo }); ViewBag.AuditorList = auditEdit.AuditorList;
} ViewBag.AuditTypeList = auditEdit.AuditTypeList;
else ViewBag.CANoList = auditEdit.CANoList;
{ ViewBag.Is8DQA = auditEdit.Is8DQA;
ViewBag.UserList = auditDMO.GetUserList(); ViewBag.IsAdmin = auditEdit.IsAdmin;
ViewBag.AuditTypeList = auditDMO.GetAuditTypeList(); ViewBag.IsSubmitter = auditEdit.IsSubmitter;
//ViewBag.AuditStandardList = auditDMO.GetAuditStandardList(); ViewBag.MesaUsers = auditEdit.MesaUsers;
ViewBag.AuditorList = auditDMO.GetAuditorList(); ViewBag.UserList = auditEdit.UserList;
ViewBag.AuditAreaList = auditDMO.GetAuditAreaList(); } catch (Exception e) {
ViewBag.AuditFindingCategoryList = auditDMO.GetAuditFindingCategories();
ViewBag.CANoList = auditDMO.GetCorrectiveActionNoList();
}
}
catch (Exception e)
{
string detailedException = ""; string detailedException = "";
try try {
{
detailedException = e.InnerException.ToString(); detailedException = e.InnerException.ToString();
} } catch {
catch
{
detailedException = e.Message; detailedException = e.Message;
} }
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + audit.AuditNo.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString(); string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + audit.AuditNo.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
Functions.WriteEvent(@User.Identity.Name + "\r\n Edit - Audit\r\n" + audit.AuditNo.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error); Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n Edit - Audit\r\n" + audit.AuditNo.ToString() + "\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = audit.AuditNo, UserID = @User.Identity.Name, DocumentType = "Audit", OperationType = "Error", Comments = "Edit - " + exceptionString }); EventLogDMO.Add(new WinEventLog() { IssueID = audit.AuditNo, UserID = @User.Identity.Name, DocumentType = "Audit", OperationType = "Error", Comments = "Edit - " + exceptionString });
throw new Exception(e.Message); throw new Exception(e.Message);
} }
return View(audit); return View(audit);
} }
/// <summary>
///
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost] [HttpPost]
public ActionResult Edit(Audit model) public ActionResult Edit(Audit model) {
{ try {
try
{
var data = model; var data = model;
auditDMO.UpdateAudit(model, (int)Session[GlobalVars.SESSION_USERID]); auditDMO.UpdateAudit(model, (int)Session[GlobalVars.SESSION_USERID]);
} } catch (Exception ex) {
catch (Exception ex)
{
return Content(ex.Message); return Content(ex.Message);
} }
return Content("Successfully Saved"); return Content("Successfully Saved");
} }
/// <summary> public ActionResult CheckCAStatus(int auditNo) {
///
/// </summary>
/// <param name="auditNo"></param>
/// <returns></returns>
public ActionResult CheckCAStatus(int auditNo)
{
int dataCount = -1; int dataCount = -1;
try try {
{
dataCount = auditDMO.GetOpenCACountByAuditNo(auditNo); dataCount = auditDMO.GetOpenCACountByAuditNo(auditNo);
} } catch (Exception ex) {
catch (Exception ex)
{
throw; throw;
} }
return Content(dataCount.ToString()); return Content(dataCount.ToString());
} }
/// <summary> public ActionResult ReadOnlyAudit(int auditNo) {
///
/// </summary>
/// <param name="auditNo"></param>
/// <returns></returns>
public ActionResult ReadOnlyAudit(int auditNo)
{
Audit audit = new Audit(); Audit audit = new Audit();
audit = auditDMO.GetAuditItemReadOnly(auditNo, (int)Session[GlobalVars.SESSION_USERID]); audit = auditDMO.GetAuditItemReadOnly(auditNo, (int)Session[GlobalVars.SESSION_USERID]);
@ -218,255 +120,106 @@ namespace Fab2ApprovalSystem.Controllers
ViewBag.AuditAreaList = auditDMO.GetAuditAreaList(); ViewBag.AuditAreaList = auditDMO.GetAuditAreaList();
ViewBag.AuditFindingCategoryList = auditDMO.GetAuditFindingCategories(); ViewBag.AuditFindingCategoryList = auditDMO.GetAuditFindingCategories();
return View(audit); return View(audit);
} }
/// <summary>
/// public ActionResult AuditReportAttachSave(IEnumerable<HttpPostedFileBase> AuditReportFiles, int auditNo) {
/// </summary> try {
/// <param name="AuditReportFiles"></param>
/// <param name="auditNo"></param>
/// <returns></returns>
public ActionResult AuditReportAttachSave(IEnumerable<HttpPostedFileBase> AuditReportFiles, int auditNo)
{
try
{
// The Name of the Upload component is "files" // The Name of the Upload component is "files"
if (AuditReportFiles != null) if (AuditReportFiles != null) {
{ int userId = (int)Session[GlobalVars.SESSION_USERID];
foreach (var file in AuditReportFiles) foreach (var file in AuditReportFiles) {
{ AuditHelper.AuditReportAttachSave(_AppSettings, auditDMO, auditNo, userId, file.FileName, file.InputStream);
// Some browsers send file names with full path.
// We are only interested in the file name.
var fileName = Path.GetFileName(file.FileName);
var fileExtension = Path.GetExtension(file.FileName);
//var physicalPath = Path.Combine(Server.MapPath("~/UserUploads"), fileName);
DirectoryInfo di;
var ccPhysicalPath = Functions.GetAttachmentFolder() + @"Audit\" + auditNo;
di = new DirectoryInfo(ccPhysicalPath);
if (!di.Exists)
di.Create();
var guid = Guid.NewGuid().ToString();
var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"Audit\" + auditNo + @"\", guid + fileExtension);
file.SaveAs(physicalPath);
AuditReportAttachment attach = new AuditReportAttachment()
{
AuditNo = auditNo,
FileGUID = guid,
FileName = fileName,
UploadedByID = (int)Session[GlobalVars.SESSION_USERID]
};
//ccDMO.InsertCCAttachment(attach);
auditDMO.InsertAuditReportAttachment(attach);
} }
} }
} } catch {
catch
{
throw; throw;
} }
return Content(""); return Content("");
} }
/// <summary> public ActionResult AuditReportAttachment_Read([DataSourceRequest] DataSourceRequest request, int auditNo) {
///
/// </summary>
/// <param name="request"></param>
/// <param name="auditNo"></param>
/// <returns></returns>
public ActionResult AuditReportAttachment_Read([DataSourceRequest] DataSourceRequest request, int auditNo)
{
return Json(auditDMO.GetAuditReportAttachments(auditNo).ToDataSourceResult(request)); return Json(auditDMO.GetAuditReportAttachments(auditNo).ToDataSourceResult(request));
} }
/// <summary>
///
/// </summary>
/// <param name="attachID"></param>
[HttpPost] [HttpPost]
public void DeleteAuditReportAttachment(int attachID) public void DeleteAuditReportAttachment(int attachID) {
{
auditDMO.DeleteAuditReportAttachment(attachID); auditDMO.DeleteAuditReportAttachment(attachID);
} }
/// <summary>
///
/// </summary>
/// <param name="fileGuid"></param>
/// <param name="auditNo"></param>
/// <returns></returns>
public FileResult DownloadAuditReportAttachment(string fileGuid, int auditNo)
{
try
{
string fileName = auditDMO.GetAuditReportAttachmentFileName(fileGuid);
string fileExtension = fileName.Substring(fileName.LastIndexOf("."), fileName.Length - fileName.LastIndexOf(".")); public FileResult DownloadAuditReportAttachment(string fileGuid, int auditNo) {
try {
string ecnFolderPath = Functions.GetAttachmentFolder() + "Audit\\" + auditNo.ToString(); string fileName, sDocument;
var sDocument = Path.Combine(ecnFolderPath, fileGuid + fileExtension); List<string> results = AuditHelper.GetFileNameAndDocument(_AppSettings, auditDMO, fileGuid, auditNo);
fileName = results[0];
var FDir_AppData = Functions.GetAttachmentFolder(); sDocument = results[1];
if (!sDocument.StartsWith(FDir_AppData)) if (string.IsNullOrEmpty(sDocument)) {
{
// Ensure that we are serving file only inside the Fab2ApprovalAttachments folder // Ensure that we are serving file only inside the Fab2ApprovalAttachments folder
// and block requests outside like "../web.config" // and block requests outside like "../web.config"
throw new HttpException(403, "Forbidden"); throw new HttpException(403, "Forbidden");
} }
if (!System.IO.File.Exists(sDocument)) if (!System.IO.File.Exists(sDocument)) {
{
return null; return null;
//throw new Exception("File not found");
} }
return File(sDocument, System.Net.Mime.MediaTypeNames.Application.Octet, fileName); return File(sDocument, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
} } catch {
catch
{
// TODO - proces the error // TODO - proces the error
throw; throw;
} }
} }
public ActionResult GetAuditFindingsList([DataSourceRequest] DataSourceRequest request, int auditNo) {
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="auditNo"></param>
/// <returns></returns>
public ActionResult GetAuditFindingsList([DataSourceRequest] DataSourceRequest request, int auditNo)
{
return Json(auditDMO.GetAuditFindingsList(auditNo).ToDataSourceResult(request)); return Json(auditDMO.GetAuditFindingsList(auditNo).ToDataSourceResult(request));
} }
public ActionResult InsertAuditFindingsItem(AuditFindings data) {
/// <summary> if ((data.FindingType == "Major" || data.FindingType == "Minor") && data.CANo == 0) {
///
/// </summary>
/// <param name="data"></param>
public ActionResult InsertAuditFindingsItem(AuditFindings data)
{
if ((data.FindingType == "Major" || data.FindingType == "Minor") && data.CANo == 0)
{
throw new ArgumentException("You must select add a CA for a Major or Minor finding."); throw new ArgumentException("You must select add a CA for a Major or Minor finding.");
} } else {
else int userId = (int)Session[GlobalVars.SESSION_USERID];
{ Audit audit = auditDMO.InsertAndGetAudit(caDMO, data, userId);
Audit audit = new Audit();
auditDMO.InsertAuditFindingsItem(data);
audit = auditDMO.GetAuditItem(data.AuditNo, (int)Session[GlobalVars.SESSION_USERID]);
//Transfer Finding Details to CA
if(data.CANo != 0)
{
CorrectiveAction ca = caDMO.GetCAItem(data.CANo, (int)Session[GlobalVars.SESSION_USERID]);
ca.CATitle = data.Title;
ca.CASourceID = 1;//Audit
caDMO.UpdateCorrectiveAction(ca);
}
return Json(audit, JsonRequestBehavior.AllowGet); return Json(audit, JsonRequestBehavior.AllowGet);
} }
} }
public ActionResult UpdateAuditFindingsItem(AuditFindings data) {
/// <summary> if ((data.FindingType == "Major" || data.FindingType == "Minor") && data.CANo == 0) {
///
/// </summary>
/// <param name="data"></param>
public ActionResult UpdateAuditFindingsItem(AuditFindings data)
{
if ((data.FindingType == "Major" || data.FindingType == "Minor") && data.CANo == 0)
{
throw new ArgumentException("You must select add a CA for a Major or Minor finding."); throw new ArgumentException("You must select add a CA for a Major or Minor finding.");
} } else {
else int userId = (int)Session[GlobalVars.SESSION_USERID];
{ Audit audit = auditDMO.UpdateAndGetAudit(caDMO, data, userId);
Audit audit = new Audit();
auditDMO.UpdateAuditFindingsItem(data);
audit = auditDMO.GetAuditItem(data.AuditNo, (int)Session[GlobalVars.SESSION_USERID]);
//Transfer Finding Details to CA
if (data.CANo != 0)
{
CorrectiveAction ca = caDMO.GetCAItem(data.CANo, (int)Session[GlobalVars.SESSION_USERID]);
ca.CATitle = data.Title;
ca.CASourceID = 1;//Audit
caDMO.UpdateCorrectiveAction(ca);
}
return Json(audit, JsonRequestBehavior.AllowGet); return Json(audit, JsonRequestBehavior.AllowGet);
} }
} }
public ActionResult DeleteAuditFindingsItem(int auditFindingsID) {
public ActionResult DeleteAuditFindingsItem(int auditFindingsID) int userId = (int)Session[GlobalVars.SESSION_USERID];
{ Audit audit = auditDMO.DeleteAndGetAudit(auditFindingsID, userId);
var af = auditDMO.GetAuditFindingsByID(auditFindingsID);
auditDMO.DeleteAuditFindingsItem(auditFindingsID);
var audit = auditDMO.GetAuditItem(af.AuditNo, (int)Session[GlobalVars.SESSION_USERID]);
return Json(audit, JsonRequestBehavior.AllowGet); return Json(audit, JsonRequestBehavior.AllowGet);
} }
/// <summary> public void ReleaseLockOnDocument(int issueID) {
/// try {
/// </summary>
/// <param name="issueID"></param>
public void ReleaseLockOnDocument(int issueID)
{
try
{
auditDMO.ReleaseLockOnDocument((int)Session[GlobalVars.SESSION_USERID], issueID); auditDMO.ReleaseLockOnDocument((int)Session[GlobalVars.SESSION_USERID], issueID);
} } catch (Exception e) {
catch (Exception e) try {
{ Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n ReleaseLockOnDocument CA\r\n" + issueID.ToString() + "\r\n" + e.Message, System.Diagnostics.EventLogEntryType.Error);
try } catch { }
{
Functions.WriteEvent(@User.Identity.Name + "\r\n ReleaseLockOnDocument CA\r\n" + issueID.ToString() + "\r\n" + e.Message, System.Diagnostics.EventLogEntryType.Error);
}
catch { }
auditDMO.ReleaseLockOnDocument(-1, issueID); auditDMO.ReleaseLockOnDocument(-1, issueID);
} }
} }
// CA Findings ====================================================================================================================== // CA Findings ======================================================================================================================
/// <summary> public ActionResult InsertCAFindingsItem(CAFindings data) {
///
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public ActionResult InsertCAFindingsItem(CAFindings data)
{
auditDMO.InsertCAFindings(data); auditDMO.InsertCAFindings(data);
if (data.ResponsibilityOwnerID != null) if (data.ResponsibilityOwnerID != null) {
{
// send an email notification // send an email notification
NotifyActionItemOwner(data.AuditNo, data.ECD, data.ResponsibilityOwnerID); NotifyActionItemOwner(data.AuditNo, data.ECD, data.ResponsibilityOwnerID);
} }
@ -474,196 +227,74 @@ namespace Fab2ApprovalSystem.Controllers
return Content(""); return Content("");
} }
/// <summary> public ActionResult UpdateCAFindingsItem(CAFindings data) {
///
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public ActionResult UpdateCAFindingsItem(CAFindings data)
{
auditDMO.UpdateCAFindings(data); auditDMO.UpdateCAFindings(data);
if (data.ResponsibilityOwnerID != data.CurrentResponsibilityOwnerID) if (data.ResponsibilityOwnerID != data.CurrentResponsibilityOwnerID) {
{
NotifyActionItemOwner(data.AuditNo, data.ECD, data.ResponsibilityOwnerID); NotifyActionItemOwner(data.AuditNo, data.ECD, data.ResponsibilityOwnerID);
} }
return Content(""); return Content("");
} }
/// <summary> public ActionResult GetCAFindingsList([DataSourceRequest] DataSourceRequest request, int auditNo) {
///
/// </summary>
/// <param name="request"></param>
/// <param name="caNo"></param>
/// <returns></returns>
public ActionResult GetCAFindingsList([DataSourceRequest] DataSourceRequest request, int auditNo)
{
return Json(auditDMO.GetCAFindingsList(auditNo).ToDataSourceResult(request)); return Json(auditDMO.GetCAFindingsList(auditNo).ToDataSourceResult(request));
} }
/// <summary> public ActionResult GetCAFindingsItemAttachments([DataSourceRequest] DataSourceRequest request, int caFindingsID) {
///
/// </summary>
/// <param name="request"></param>
/// <param name="d7PAID"></param>
/// <returns></returns>
public ActionResult GetCAFindingsItemAttachments([DataSourceRequest] DataSourceRequest request, int caFindingsID)
{
return Json(auditDMO.GetCAFindingsItemAttachments(caFindingsID).ToDataSourceResult(request)); return Json(auditDMO.GetCAFindingsItemAttachments(caFindingsID).ToDataSourceResult(request));
} }
public ActionResult GetCAFindingsItem(int caFindingsID) {
/// <summary>
///
/// </summary>
/// <param name="d7paID"></param>
/// <returns></returns>
public ActionResult GetCAFindingsItem(int caFindingsID)
{
var model = new CAFindings(); var model = new CAFindings();
model = auditDMO.GetCAFindingsItem(caFindingsID); model = auditDMO.GetCAFindingsItem(caFindingsID);
return PartialView("_CAFindingsAttachment", model); return PartialView("_CAFindingsAttachment", model);
} }
/// <summary>
///
/// </summary>
/// <param name="caFindingsID"></param>
[HttpPost] [HttpPost]
public void DeleteCAFindingsItem(int caFindingsID) public void DeleteCAFindingsItem(int caFindingsID) {
{
auditDMO.DeleteCAFindingsItem(caFindingsID); auditDMO.DeleteCAFindingsItem(caFindingsID);
} }
/// <summary> public ActionResult SaveCAFindings_Attachemnt(IEnumerable<HttpPostedFileBase> CAFindings_Attachemnt, int caFindingsID, int auditNo) {
/// try {
/// </summary>
/// <param name="D7PA_Attachemnt"></param>
/// <param name="d7PAID"></param>
/// <param name="caNo"></param>
/// <returns></returns>
public ActionResult SaveCAFindings_Attachemnt(IEnumerable<HttpPostedFileBase> CAFindings_Attachemnt, int caFindingsID, int auditNo)
{
try
{
// The Name of the Upload component is "files" // The Name of the Upload component is "files"
if (CAFindings_Attachemnt != null) if (CAFindings_Attachemnt != null) {
{ int userId = (int)Session[GlobalVars.SESSION_USERID];
foreach (var file in CAFindings_Attachemnt) foreach (var file in CAFindings_Attachemnt) {
{ AuditHelper.SaveAndInsert(_AppSettings, auditDMO, caFindingsID, auditNo, userId, file.FileName, file.InputStream);
// Some browsers send file names with full path.
// We are only interested in the file name.
var fileName = Path.GetFileName(file.FileName);
var fileExtension = Path.GetExtension(file.FileName);
//var physicalPath = Path.Combine(Server.MapPath("~/UserUploads"), fileName);
DirectoryInfo di;
var ccPhysicalPath = Functions.GetAttachmentFolder() + @"Audit\" + auditNo;
di = new DirectoryInfo(ccPhysicalPath);
if (!di.Exists)
di.Create();
var guid = Guid.NewGuid().ToString();
var physicalPath = Path.Combine(Functions.GetAttachmentFolder() + @"Audit\" + auditNo + @"\", guid + fileExtension);
file.SaveAs(physicalPath);
AuditReportAttachment attach = new AuditReportAttachment()
{
CAFindingsID = caFindingsID,
AuditNo = auditNo,
FileGUID = guid,
FileName = fileName,
UploadedByID = (int)Session[GlobalVars.SESSION_USERID]
};
auditDMO.InsertAuditReportAttachment(attach);
} }
} }
} } catch {
catch
{
throw; throw;
} }
return Content(""); return Content("");
} }
public void NotifyActionItemOwner(int issueID, DateTime? dueDate, int? responsibleOwnerID) {
try {
string email = auditDMO.NotifyActionItemOwner(issueID, dueDate, responsibleOwnerID, _AppSettings.EmailTemplatesPath);
/// <summary> try {
///
/// </summary>
/// <param name="issueID"></param>
/// <param name="currentStep"></param>
public void NotifyActionItemOwner(int issueID, DateTime? dueDate, int? responsibleOwnerID)
{
try
{
string emailSentList = "";
//List<string> emailIst = ldDMO.GetApproverEmailList(@issueID, currentStep).Distinct().ToList();
string email = MiscDMO.GetEmail(responsibleOwnerID);
string emailTemplate = "CorrectiveActionFindingAssigned.txt";
string userEmail = string.Empty;
string subject = "5s/CA Findings";
string senderName = "CorrectiveAction";
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[5];
emailparams[0] = Functions.ReturnAuditNoStringFormat(issueID);
emailparams[1] = dueDate.ToString();
emailparams[2] = Functions.DocumentTypeMapper(GlobalVars.DocumentType.Audit);
emailparams[3] = GlobalVars.hostURL;
emailparams[4] = issueID.ToString();
userEmail = email;
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
emailSentList += email + ",";
try
{
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "Corrective Action", OperationType = "Email", Comments = "Task Assigned for 5S/CA Findings" + ":" + email }); EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "Corrective Action", OperationType = "Email", Comments = "Task Assigned for 5S/CA Findings" + ":" + email });
} } catch { }
catch { } } catch (Exception e) {
}
catch (Exception e)
{
string detailedException = ""; string detailedException = "";
try try {
{
detailedException = e.InnerException.ToString(); detailedException = e.InnerException.ToString();
} } catch {
catch
{
detailedException = e.Message; detailedException = e.Message;
} }
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + issueID.ToString() + " 5s/CAFindings:" + e.Message.ToString().Substring(0, 250) : e.Message.ToString(); string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + issueID.ToString() + " 5s/CAFindings:" + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
Functions.WriteEvent(@User.Identity.Name + "\r\n 5s/CAFindings - NotifyActionItemOwner\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error); Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n 5s/CAFindings - NotifyActionItemOwner\r\n" + detailedException, System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "Corrective Action", OperationType = "Error", Comments = "5s/CAFindings Notification - " + exceptionString }); EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "Corrective Action", OperationType = "Error", Comments = "5s/CAFindings Notification - " + exceptionString });
//throw e; }
} }
} public ActionResult IsCAAssignedToAudit(int caNo, int auditNo) {
public ActionResult IsCAAssignedToAudit(int caNo, int auditNo)
{
return Content(auditDMO.IsCAAssignedToAudit(caNo, auditNo).ToString()); return Content(auditDMO.IsCAAssignedToAudit(caNo, auditNo).ToString());
} }
}
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,3 @@
using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Utilities;
using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.ViewModels;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Configuration; using System.Configuration;
@ -12,351 +5,199 @@ using System.Linq;
using System.Web; using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
namespace Fab2ApprovalSystem.Controllers using Fab2ApprovalSystem.DMO;
{ using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.Utilities;
using Fab2ApprovalSystem.ViewModels;
[Authorize] using Kendo.Mvc.Extensions;
[SessionExpireFilter] using Kendo.Mvc.UI;
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class HomeController : Controller namespace Fab2ApprovalSystem.Controllers;
{
[Authorize]
[SessionExpireFilter]
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class HomeController : Controller {
MRB_DMO mrbDMO = new MRB_DMO(GlobalVars.AppSettings);
PartsRequestDMO prDMO = new PartsRequestDMO();
LotDispositionDMO ldDMO = new LotDispositionDMO(); LotDispositionDMO ldDMO = new LotDispositionDMO();
MRB_DMO mrbDMO = new MRB_DMO();
WorkflowDMO wfDMO = new WorkflowDMO(); WorkflowDMO wfDMO = new WorkflowDMO();
ECN_DMO ecnDMO = new ECN_DMO(); ECN_DMO ecnDMO = new ECN_DMO();
PartsRequestDMO prDMO = new PartsRequestDMO();
UserUtilities userDMO = new UserUtilities(); UserUtilities userDMO = new UserUtilities();
UserAccountDMO originalUserDMO = new UserAccountDMO(); UserAccountDMO originalUserDMO = new UserAccountDMO();
TrainingDMO trainingDMO = new TrainingDMO(); TrainingDMO trainingDMO = new TrainingDMO();
MiscDMO miscDMO = new MiscDMO(); MiscDMO miscDMO = new MiscDMO();
private readonly AppSettings _AppSettings = GlobalVars.AppSettings;
public ActionResult Index(string tabName) {
/// <summary>
///
/// </summary>
/// <param name="tabName"></param>
/// <returns></returns>
public ActionResult Index(string tabName)
{
ViewBag.ActiveTabName = tabName; ViewBag.ActiveTabName = tabName;
return View(); return View();
} }
/// <summary> public ActionResult MyTasks() {
///
/// </summary>
/// <returns></returns>
public ActionResult MyTasks()
{
return View(); return View();
} }
public ActionResult AllDocuments() {
public ActionResult AllDocuments()
{
return View(); return View();
} }
public ActionResult SpecialWorkRequestList() {
/// <summary>
///
/// </summary>
/// <returns></returns>
public ActionResult SpecialWorkRequestList()
{
return View(); return View();
} }
public ActionResult MRBList() {
public ActionResult MRBList()
{
return View(); return View();
} }
public ActionResult ECNList() public ActionResult ECNList() {
{
return View(); return View();
} }
public ActionResult TrainingList() public ActionResult TrainingList() {
{
return View(); return View();
} }
public ActionResult LotDispositionList() public ActionResult LotDispositionList() {
{
return View(); return View();
} }
public ActionResult AuditList() {
public ActionResult AuditList()
{
return View(); return View();
} }
public ActionResult CorrectiveActionList() public ActionResult CorrectiveActionList() {
{
return View(); return View();
} }
/// <summary> public ActionResult ECN_TECN(string viewOption) {
///
/// </summary>
/// <param name="viewOption"></param>
/// <returns></returns>
public ActionResult ECN_TECN(string viewOption)
{
ViewBag.ViewOption = viewOption; ViewBag.ViewOption = viewOption;
return View(); return View();
} }
public ActionResult ChangeControlList() {
public ActionResult ChangeControlList()
{
return View(); return View();
} }
/// <summary>
/// public ActionResult GetTaskList([DataSourceRequest] DataSourceRequest request, string tabName) {
/// </summary> try {
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetTaskList([DataSourceRequest]DataSourceRequest request, string tabName)
{
try
{
ViewBag.ActiveTabName = tabName; ViewBag.ActiveTabName = tabName;
IEnumerable<IssuesViewModel> data = ldDMO.GetTaskList((int)Session[GlobalVars.SESSION_USERID]); List<IssuesViewModel> data = ldDMO.GetTaskList((int)Session[GlobalVars.SESSION_USERID]).Distinct().ToList();
return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
} } catch (Exception ex) {
catch (Exception ex)
{
// TODO record the error // TODO record the error
throw ex; throw ex;
} }
} }
public ActionResult GetMyOpenActionItems([DataSourceRequest]DataSourceRequest request, string tabName) public ActionResult GetMyOpenActionItems([DataSourceRequest] DataSourceRequest request, string tabName) {
{ try {
try
{
ViewBag.ActiveTabName = tabName; ViewBag.ActiveTabName = tabName;
IEnumerable<OpenActionItemViewModel> data = ldDMO.GetMyOpenActionItems((int)Session[GlobalVars.SESSION_USERID]); List<OpenActionItemViewModel> data = ldDMO.GetMyOpenActionItems((int)Session[GlobalVars.SESSION_USERID]).Distinct().ToList();
return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
} } catch (Exception ex) {
catch (Exception ex)
{
// TODO record the error // TODO record the error
throw ex; throw ex;
} }
} }
public ActionResult GetDocuments([DataSourceRequest] DataSourceRequest request, string tabName) {
public ActionResult GetDocuments([DataSourceRequest]DataSourceRequest request, string tabName)
{
ViewBag.ActiveTabName = tabName; ViewBag.ActiveTabName = tabName;
//IEnumerable<IssuesViewModel> data = ldDMO.GetLotDispositions();
IEnumerable<IssuesViewModel> data = ldDMO.GetDocuments(); IEnumerable<IssuesViewModel> data = ldDMO.GetDocuments();
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
public ActionResult GetWorkRequests([DataSourceRequest] DataSourceRequest request) {
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetWorkRequests([DataSourceRequest]DataSourceRequest request)
{
IEnumerable<IssuesViewModel> data = ldDMO.GetWorkRequests(); IEnumerable<IssuesViewModel> data = ldDMO.GetWorkRequests();
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
public ActionResult GetChangeControlList([DataSourceRequest] DataSourceRequest request) {
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetChangeControlList([DataSourceRequest]DataSourceRequest request)
{
IEnumerable<ChangeControlList> data = ldDMO.GetChangeControls(int.Parse(Session[GlobalVars.SESSION_USERID].ToString())); IEnumerable<ChangeControlList> data = ldDMO.GetChangeControls(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()));
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
/// <summary> public ActionResult GetAuditList([DataSourceRequest] DataSourceRequest request) {
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetAuditList([DataSourceRequest]DataSourceRequest request)
{
IEnumerable<AuditList> data = ldDMO.GetAuditList(int.Parse(Session[GlobalVars.SESSION_USERID].ToString())); IEnumerable<AuditList> data = ldDMO.GetAuditList(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()));
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
/// <summary> public ActionResult GetCorrectiveActionList([DataSourceRequest] DataSourceRequest request) {
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetCorrectiveActionList([DataSourceRequest]DataSourceRequest request)
{
IEnumerable<CorrectiveAction> data = ldDMO.GetCorrectiveActionList(int.Parse(Session[GlobalVars.SESSION_USERID].ToString())); IEnumerable<CorrectiveAction> data = ldDMO.GetCorrectiveActionList(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()));
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
/// <summary> public ActionResult GetMRBList([DataSourceRequest] DataSourceRequest request) {
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetMRBList([DataSourceRequest]DataSourceRequest request)
{
IEnumerable<IssuesViewModel> data = ldDMO.GetMRBList(int.Parse(Session[GlobalVars.SESSION_USERID].ToString())); IEnumerable<IssuesViewModel> data = ldDMO.GetMRBList(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()));
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
public ActionResult GetLotDispositionList([DataSourceRequest] DataSourceRequest request) {
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetLotDispositionList([DataSourceRequest]DataSourceRequest request)
{
IEnumerable<IssuesViewModel> data = ldDMO.GetLotDispositionList(int.Parse(Session[GlobalVars.SESSION_USERID].ToString())); IEnumerable<IssuesViewModel> data = ldDMO.GetLotDispositionList(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()));
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
/// <summary> public ActionResult GetECNList([DataSourceRequest] DataSourceRequest request) {
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetECNList([DataSourceRequest]DataSourceRequest request)
{
IEnumerable<IssuesViewModel> data = ldDMO.GetECNList(int.Parse(Session[GlobalVars.SESSION_USERID].ToString())); IEnumerable<IssuesViewModel> data = ldDMO.GetECNList(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()));
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
public ActionResult GetTrainingList([DataSourceRequest]DataSourceRequest request) public ActionResult GetTrainingList([DataSourceRequest] DataSourceRequest request) {
{
IEnumerable<Training> data = trainingDMO.GetAllTrainings(); IEnumerable<Training> data = trainingDMO.GetAllTrainings();
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
/// <summary> public ActionResult MyECNsTECNs(string dataType) {
///
/// </summary>
/// <param name="dataType"></param>
/// <returns></returns>
public ActionResult MyECNsTECNs(string dataType)
{
ViewBag.ActiveTabName = dataType; ViewBag.ActiveTabName = dataType;
return View(); return View();
} }
/// <summary> public ActionResult GetECN_TECNsPendingApproval([DataSourceRequest] DataSourceRequest request) {
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetECN_TECNsPendingApproval([DataSourceRequest]DataSourceRequest request)
{
IEnumerable<IssuesViewModel> data = ecnDMO.GetECN_TECNPendingApprovals(int.Parse(Session[GlobalVars.SESSION_USERID].ToString())); IEnumerable<IssuesViewModel> data = ecnDMO.GetECN_TECNPendingApprovals(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()));
ViewBag.ViewOption = "Pending Approvals"; ViewBag.ViewOption = "Pending Approvals";
Session[GlobalVars.ECN_VIEW_OPTION] = ViewBag.ViewOption; Session[GlobalVars.ECN_VIEW_OPTION] = ViewBag.ViewOption;
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
public ActionResult GetMyExpiredTECNs([DataSourceRequest] DataSourceRequest request) {
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetMyExpiredTECNs([DataSourceRequest]DataSourceRequest request)
{
IEnumerable<IssuesViewModel> data = ecnDMO.GetMyExpiredTECNs(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), 7); IEnumerable<IssuesViewModel> data = ecnDMO.GetMyExpiredTECNs(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), 7);
ViewBag.ViewOption = "Expired TECNs"; ViewBag.ViewOption = "Expired TECNs";
Session[GlobalVars.ECN_VIEW_OPTION] = ViewBag.ViewOption; Session[GlobalVars.ECN_VIEW_OPTION] = ViewBag.ViewOption;
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
public ActionResult GetAllTECNs([DataSourceRequest]DataSourceRequest request) public ActionResult GetAllTECNs([DataSourceRequest] DataSourceRequest request) {
{
IEnumerable<IssuesViewModel> data = ecnDMO.GetAllTECNs(); IEnumerable<IssuesViewModel> data = ecnDMO.GetAllTECNs();
ViewBag.ViewOption = "All TECNs"; ViewBag.ViewOption = "All TECNs";
Session[GlobalVars.ECN_VIEW_OPTION] = ViewBag.ViewOption; Session[GlobalVars.ECN_VIEW_OPTION] = ViewBag.ViewOption;
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
/// <summary> public ActionResult GetMyConvertedTECNsToECNs([DataSourceRequest] DataSourceRequest request) {
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetMyConvertedTECNsToECNs([DataSourceRequest]DataSourceRequest request)
{
IEnumerable<IssuesViewModel> data = ecnDMO.GetMyConvertedTECNsToECNs(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), 7); IEnumerable<IssuesViewModel> data = ecnDMO.GetMyConvertedTECNsToECNs(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), 7);
ViewBag.ViewOption = "Converted TECNs"; ViewBag.ViewOption = "Converted TECNs";
Session[GlobalVars.ECN_VIEW_OPTION] = ViewBag.ViewOption; Session[GlobalVars.ECN_VIEW_OPTION] = ViewBag.ViewOption;
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
public ActionResult GetMyExpiringTECNs([DataSourceRequest] DataSourceRequest request) {
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ActionResult GetMyExpiringTECNs([DataSourceRequest]DataSourceRequest request)
{
IEnumerable<IssuesViewModel> data = ecnDMO.GetMyExpiringTECNs(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), 7); IEnumerable<IssuesViewModel> data = ecnDMO.GetMyExpiringTECNs(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), 7);
ViewBag.ViewOption = "Expiring TECNs"; ViewBag.ViewOption = "Expiring TECNs";
Session[GlobalVars.ECN_VIEW_OPTION] = ViewBag.ViewOption; Session[GlobalVars.ECN_VIEW_OPTION] = ViewBag.ViewOption;
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
public ActionResult GetLotList([DataSourceRequest] DataSourceRequest request, int workRequestID) {
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="workRequestID"></param>
/// <returns></returns>
public ActionResult GetLotList([DataSourceRequest] DataSourceRequest request, int workRequestID)
{
LotTravelerDMO LotTravDMO = new LotTravelerDMO(); LotTravelerDMO LotTravDMO = new LotTravelerDMO();
return Json(LotTravDMO.GetLotListBasedOnSWRNumber(workRequestID).ToDataSourceResult(request)); return Json(LotTravDMO.GetLotListBasedOnSWRNumber(workRequestID).ToDataSourceResult(request));
} }
/// <summary>
///
/// </summary>
/// <returns></returns> /// <returns></returns>
public ActionResult SetOOOStatus(int delegatedTo, DateTime startDate, DateTime endDate, string tab) public ActionResult SetOOOStatus(int delegatedTo, DateTime startDate, DateTime endDate, string tab) {
{ if (Session[GlobalVars.SESSION_USERID] != null) {
if (Session[GlobalVars.SESSION_USERID] != null)
{
int returnValue = MiscDMO.EnableOOOStatus(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), delegatedTo, startDate, endDate); int returnValue = MiscDMO.EnableOOOStatus(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), delegatedTo, startDate, endDate);
if (returnValue == 3) // the delegator is already a delegator to someone else if (returnValue == 3) // the delegator is already a delegator to someone else
{ {
@ -371,32 +212,15 @@ namespace Fab2ApprovalSystem.Controllers
return Content(""); return Content("");
} }
public void ExpireOOOStatus(string tab) {
/// <summary> if (Session[GlobalVars.SESSION_USERID] != null) {
///
/// </summary>
/// <param name="oooUserID"></param>
public void ExpireOOOStatus(string tab)
{
if (Session[GlobalVars.SESSION_USERID] != null)
{
MiscDMO.ExpireOOOStatus(int.Parse(Session[GlobalVars.SESSION_USERID].ToString())); MiscDMO.ExpireOOOStatus(int.Parse(Session[GlobalVars.SESSION_USERID].ToString()));
Session[GlobalVars.OOO] = false; Session[GlobalVars.OOO] = false;
}
} }
}
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="issue"></param>
/// <returns></returns>
[AcceptVerbs(HttpVerbs.Post)] [AcceptVerbs(HttpVerbs.Post)]
public ActionResult DeleteItem([DataSourceRequest] DataSourceRequest request, IssuesViewModel issue) public ActionResult DeleteItem([DataSourceRequest] DataSourceRequest request, IssuesViewModel issue) {
{
GlobalVars.DocumentType dType; GlobalVars.DocumentType dType;
Enum.TryParse(issue.DocumentType, out dType); Enum.TryParse(issue.DocumentType, out dType);
if (dType == GlobalVars.DocumentType.MRB) if (dType == GlobalVars.DocumentType.MRB)
@ -408,67 +232,42 @@ namespace Fab2ApprovalSystem.Controllers
else if (dType == GlobalVars.DocumentType.CorrectiveAction) else if (dType == GlobalVars.DocumentType.CorrectiveAction)
ldDMO.DeleteCADocument(issue.IssueID, int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), "Corrective Action"); ldDMO.DeleteCADocument(issue.IssueID, int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), "Corrective Action");
return Json(new[] { issue }.ToDataSourceResult(request, ModelState)); return Json(new[] { issue }.ToDataSourceResult(request, ModelState));
} }
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="ca"></param>
/// <returns></returns>
[AcceptVerbs(HttpVerbs.Post)] [AcceptVerbs(HttpVerbs.Post)]
public ActionResult DeleteCAItem([DataSourceRequest] DataSourceRequest request, CorrectiveAction ca) public ActionResult DeleteCAItem([DataSourceRequest] DataSourceRequest request, CorrectiveAction ca) {
{
ldDMO.DeleteCADocument(ca.CANo, int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), "Corrective Action"); ldDMO.DeleteCADocument(ca.CANo, int.Parse(Session[GlobalVars.SESSION_USERID].ToString()), "Corrective Action");
return Json(new[] { ca }.ToDataSourceResult(request, ModelState)); return Json(new[] { ca }.ToDataSourceResult(request, ModelState));
} }
/// <summary> public ActionResult About() {
///
/// </summary>
/// <returns></returns>
public ActionResult About()
{
ViewBag.Message = "Your application description page."; ViewBag.Message = "Your application description page.";
return View(); return View();
} }
/// <summary> public ActionResult Contact() {
///
/// </summary>
/// <returns></returns>
public ActionResult Contact()
{
ViewBag.Message = "Your contact page."; ViewBag.Message = "Your contact page.";
return View(); return View();
} }
#region testing purpose #region testing purpose
public ActionResult Edit() public ActionResult Edit() {
{
return View(DemoHelper.Instance.ListOfModels[0]); return View(DemoHelper.Instance.ListOfModels[0]);
} }
[HttpPost] [HttpPost]
public ActionResult Edit(TestModel editTest) public ActionResult Edit(TestModel editTest) {
{
DemoHelper.Instance.ListOfModels[0] = editTest; DemoHelper.Instance.ListOfModels[0] = editTest;
return RedirectToAction("Index"); return RedirectToAction("Index");
} }
public static void Test() public static void Test() {
{
string[] colorStrings = { "0", "2", "8", "blue", "Blue", "Yellow", "Red, Green" }; string[] colorStrings = { "0", "2", "8", "blue", "Blue", "Yellow", "Red, Green" };
foreach (string colorString in colorStrings) foreach (string colorString in colorStrings) {
{
GlobalVars.Colors colorValue; GlobalVars.Colors colorValue;
if (Enum.TryParse(colorString, true, out colorValue)) if (Enum.TryParse(colorString, true, out colorValue))
if (Enum.IsDefined(typeof(GlobalVars.Colors), colorValue) | colorValue.ToString().Contains(",")) if (Enum.IsDefined(typeof(GlobalVars.Colors), colorValue) | colorValue.ToString().Contains(","))
@ -482,338 +281,160 @@ namespace Fab2ApprovalSystem.Controllers
#endregion #endregion
/// <summary> public void DelegateDocumentApproval(int issueID, int delegateTo, string ecnTypeString, string title) {
///
/// </summary>
/// <param name="issueID"></param>
/// <param name="delegateTo"></param>
/// <param name="step"></param>
/// <param name="docType"></param>
/// <param name="ecnTypeString"></param>
public void DelegateDocumentApproval(int issueID, int delegateTo, string ecnTypeString, string title)
{
var email = ""; var email = "";
int delegateFrom = (int)Session[GlobalVars.SESSION_USERID]; int delegateFrom = (int)Session[GlobalVars.SESSION_USERID];
try try {
{
email = wfDMO.DelegateDocumentApproval(issueID, delegateFrom, delegateTo); email = wfDMO.DelegateDocumentApproval(issueID, delegateFrom, delegateTo);
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = ecnTypeString , OperationType = "Delegation", Comments = "Delegated from - " + delegateFrom + " to " + delegateTo }); EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Delegation", Comments = "Delegated from - " + delegateFrom + " to " + delegateTo });
} } catch (Exception e) {
catch (Exception e)
{
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + issueID.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString(); string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + issueID.ToString() + " " + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
Functions.WriteEvent(@User.Identity.Name + "\r\n DelegateApproval\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error); Functions.WriteEvent(_AppSettings, @User.Identity.Name + "\r\n DelegateApproval\r\n" + e.Message.ToString(), System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = " + ecnTypeString + ", OperationType = "Error", Comments = "DelegateApproval - " + exceptionString }); EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = " + ecnTypeString + ", OperationType = "Error", Comments = "DelegateApproval - " + exceptionString });
throw new Exception(e.Message); throw new Exception(e.Message);
} }
HomeHelper.DelegateDocumentApproval(_AppSettings, issueID, ecnTypeString, title, email);
string emailTemplate = "DelegateApproval.txt"; try {
string userEmail = string.Empty;
string subject;
string senderName = ecnTypeString;
subject = ecnTypeString + " Delegation" + " - Email would be sent to " + email + " for Number " + issueID + ", - " + title; ;
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[4];
emailparams[0] = issueID.ToString();
emailparams[1] = issueID.ToString();
emailparams[2] = GlobalVars.hostURL;
emailparams[3] = ecnTypeString;
userEmail = email;
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
try
{
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Delegated to Approver: " + email }); EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Delegated to Approver: " + email });
} } catch { }
catch { }
} }
/// <summary> public JsonResult GetAllUsersList() {
///
/// </summary>
/// <returns></returns>
public JsonResult GetAllUsersList()
{
UserAccountDMO userDMO = new UserAccountDMO(); UserAccountDMO userDMO = new UserAccountDMO();
IEnumerable<LoginModel> userlist = userDMO.GetAllUsers(); IEnumerable<LoginModel> userlist = userDMO.GetAllUsers();
return Json(userlist, JsonRequestBehavior.AllowGet); return Json(userlist, JsonRequestBehavior.AllowGet);
} }
/// <summary> public ActionResult SaveAllDocumentsFilter(string data) {
///
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public ActionResult SaveAllDocumentsFilter(string data)
{
Session["AllDocumentsFilterData"] = data; Session["AllDocumentsFilterData"] = data;
return new EmptyResult(); return new EmptyResult();
} }
/// <summary> public ActionResult LoadAllDocumentsFilter() {
///
/// </summary>
/// <returns></returns>
public ActionResult LoadAllDocumentsFilter()
{
return Json(Session["AllDocumentsFilterData"], JsonRequestBehavior.AllowGet); return Json(Session["AllDocumentsFilterData"], JsonRequestBehavior.AllowGet);
} }
/// <summary> public ActionResult SaveSWRFilter(string data) {
///
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public ActionResult SaveSWRFilter(string data)
{
Session["SWRFilterData"] = data; Session["SWRFilterData"] = data;
return new EmptyResult(); return new EmptyResult();
} }
/// <summary> public ActionResult LoadSWRFilter() {
///
/// </summary>
/// <returns></returns>
public ActionResult LoadSWRFilter()
{
return Json(Session["SWRFilterData"], JsonRequestBehavior.AllowGet); return Json(Session["SWRFilterData"], JsonRequestBehavior.AllowGet);
} }
/// <summary> public ActionResult SavePCRBFilter(string data) {
///
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public ActionResult SavePCRBFilter(string data)
{
Session["PCRBFilterData"] = data; Session["PCRBFilterData"] = data;
return new EmptyResult(); return new EmptyResult();
} }
/// <summary> public ActionResult LoadPCRBFilter() {
///
/// </summary>
/// <returns></returns>
public ActionResult LoadPCRBFilter()
{
return Json(Session["PCRBFilterData"], JsonRequestBehavior.AllowGet); return Json(Session["PCRBFilterData"], JsonRequestBehavior.AllowGet);
} }
public ActionResult PartsRequestList() public ActionResult PartsRequestList() {
{
ViewBag.CanDeletePR = Session[GlobalVars.CAN_CREATE_PARTS_REQUEST]; ViewBag.CanDeletePR = Session[GlobalVars.CAN_CREATE_PARTS_REQUEST];
return View(); return View();
} }
public ActionResult GetPartsRequestList([DataSourceRequest]DataSourceRequest request) public ActionResult GetPartsRequestList([DataSourceRequest] DataSourceRequest request) {
{
IEnumerable<PartsRequestList> data = prDMO.GetPartsRequestList(); IEnumerable<PartsRequestList> data = prDMO.GetPartsRequestList();
return Json(data.ToDataSourceResult(request)); return Json(data.ToDataSourceResult(request));
} }
public ActionResult GetMyPartsRequestsList([DataSourceRequest]DataSourceRequest request, string tabName) public ActionResult GetMyPartsRequestsList([DataSourceRequest] DataSourceRequest request, string tabName) {
{ try {
try
{
ViewBag.ActiveTabName = tabName; ViewBag.ActiveTabName = tabName;
var data = prDMO.GetMyPartsRequests((int)Session[GlobalVars.SESSION_USERID]); var data = prDMO.GetMyPartsRequests((int)Session[GlobalVars.SESSION_USERID]);
return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
} } catch (Exception ex) {
catch (Exception ex)
{
// TODO record the error // TODO record the error
throw ex; throw ex;
} }
} }
[AcceptVerbs(HttpVerbs.Post)] [AcceptVerbs(HttpVerbs.Post)]
public ActionResult DeletePR([DataSourceRequest] DataSourceRequest request, MyPartsRequestList pr) public ActionResult DeletePR([DataSourceRequest] DataSourceRequest request, MyPartsRequestList pr) {
{ try {
try
{
if (Convert.ToBoolean(Session[GlobalVars.CAN_CREATE_PARTS_REQUEST]) == false) if (Convert.ToBoolean(Session[GlobalVars.CAN_CREATE_PARTS_REQUEST]) == false)
throw new Exception("Permission denied"); throw new Exception("Permission denied");
prDMO.DeleteDocument(pr.PRNumber, (int)Session[GlobalVars.SESSION_USERID]); prDMO.DeleteDocument(pr.PRNumber, (int)Session[GlobalVars.SESSION_USERID]);
return Json(new[] { pr }.ToDataSourceResult(request, ModelState)); return Json(new[] { pr }.ToDataSourceResult(request, ModelState));
} } catch (Exception ex) {
catch (Exception ex)
{
return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, ex.Message); return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, ex.Message);
} }
} }
public void NotifyDelegation(int delegatedUser, DateTime startDate, DateTime endDate) public void NotifyDelegation(int delegatedUser, DateTime startDate, DateTime endDate) {
{
LoginModel delegateFrom = originalUserDMO.GetUserByID((int)Session[GlobalVars.SESSION_USERID]); LoginModel delegateFrom = originalUserDMO.GetUserByID((int)Session[GlobalVars.SESSION_USERID]);
LoginModel delegateTo = originalUserDMO.GetUserByID(delegatedUser); LoginModel delegateTo = originalUserDMO.GetUserByID(delegatedUser);
List<string> emailList = new List<string>(); List<string> emailList = new List<string>();
emailList.Add(delegateFrom.Email); emailList.Add(delegateFrom.Email);
emailList.Add(delegateTo.Email); emailList.Add(delegateTo.Email);
HomeHelper.NotifyDelegation(_AppSettings, startDate, endDate, delegateFrom, delegateTo, emailList);
string emailTemplate = "DelegationOn.txt"; try {
string userEmail = string.Empty; } catch { }
string subject = "Mesa Approval Delegation Notification";
string senderName = "Mesa Approval";
foreach (string email in emailList)
{
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[5];
emailparams[0] = delegateFrom.FullName;
emailparams[1] = delegateTo.FullName;
emailparams[2] = startDate.ToString("yyyy-MM-dd");
emailparams[3] = endDate.ToString("yyyy-MM-dd");
userEmail = email;
//#if(DEBUG)
// userEmail = GlobalVars.SENDER_EMAIL;
//#endif
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
} }
try public bool ProcessOoO() {
{
//EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = ecnTypeString, OperationType = "Email", Comments = "Rejection: " + userEmail }); try {
}
catch { }
}
public bool ProcessOoO()
{
try
{
UserAccountDMO userDMO = new UserAccountDMO(); UserAccountDMO userDMO = new UserAccountDMO();
userDMO.ProcessOoO(); userDMO.ProcessOoO();
return true; return true;
} } catch {
catch
{
return false; return false;
} }
} }
public bool ExpireOoO() public bool ExpireOoO() {
{ try {
try
{
UserAccountDMO userDMO = new UserAccountDMO(); UserAccountDMO userDMO = new UserAccountDMO();
userDMO.ExpireOoO(); userDMO.ExpireOoO();
return true; return true;
} } catch {
catch
{
return false; return false;
} }
} }
public bool ApprovalsReminderNotifications() public bool ApprovalsReminderNotifications() {
{ try {
try // Get list of approvals
{
//Get list of approvals
List<ApproveListModel> approveList = miscDMO.GetApprovalReminderList(); List<ApproveListModel> approveList = miscDMO.GetApprovalReminderList();
foreach (var item in approveList) foreach (var item in approveList) {
{ try {
try
{
NotifyApprover(item.AssignedEmail, item.Title, item.IssueID, item.DocType); NotifyApprover(item.AssignedEmail, item.Title, item.IssueID, item.DocType);
} } catch (Exception e) {
catch(Exception e)
{
EventLogDMO.Add(new WinEventLog() { IssueID = item.ApprovalKey, UserID = "SYSTEM", DocumentType = "Approval Reminders", OperationType = "Email", Comments = e.Message }); EventLogDMO.Add(new WinEventLog() { IssueID = item.ApprovalKey, UserID = "SYSTEM", DocumentType = "Approval Reminders", OperationType = "Email", Comments = e.Message });
} }
//We want to update the last notification anyway so we don't continue trying on something that may be failing. // We want to update the last notification anyway so we don't continue trying on something that may be failing.
miscDMO.UpdateApprovalNotifyDate(item.ApprovalKey); miscDMO.UpdateApprovalNotifyDate(item.ApprovalKey);
} }
// List<ApproveListModel> approveList = miscDMO. // List<ApproveListModel> approveList = miscDMO.
return true; return true;
} } catch {
catch
{
return false; return false;
} }
} }
public void NotifyApprover(string toEmail, string title, int issueId, string docType) public void NotifyApprover(string toEmail, string title, int issueId, string docType) {
{ try {
HomeHelper.NotifyApprover(_AppSettings, toEmail, title, issueId, docType);
try
{
string emailSentList = "";
//List<string> emailIst = ldDMO.GetApproverEmailList(@issueID, currentStep).Distinct().ToList();
//List<string> emailIst = MiscDMO.GetApproverEmailListByDocument(@ecnNumber, currentStep, documentType).Distinct().ToList();
//string ecnCreatedByEmail = MiscDMO.GetEmail(ecnCreatedById);
string emailTemplate = "ApprovalReminders.txt";
string userEmail = string.Empty;
string subject = string.Empty;
string senderName = docType;
subject = docType + " Approval Reminder: " + title;
EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[4];
emailparams[0] = docType;
emailparams[1] = title;
emailparams[2] = issueId.ToString();
userEmail = toEmail;
//#if(DEBUG)
//string SenderEmail = "MesaFabApproval@infineon.com";
//userEmail = "jonathan.ouellette@infineon.com";
//#endif
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, "jonathan.ouellette@infineon.com", subject, emailparams);
//en.SendNotificationEmail(emailTemplate, SenderEmail, senderName, userEmail, null, subject, emailparams);
//emailSentList = ecnCreatedByEmail;
try
{
try {
EventLogDMO.Add(new WinEventLog() { IssueID = issueId, UserID = @User.Identity.Name, DocumentType = docType, OperationType = "Email", Comments = "Approval reminders" }); EventLogDMO.Add(new WinEventLog() { IssueID = issueId, UserID = @User.Identity.Name, DocumentType = docType, OperationType = "Email", Comments = "Approval reminders" });
} } catch { }
catch { }
//EmailNotification en = new EmailNotification(subject, ConfigurationManager.AppSettings["EmailTemplatesPath"]); } catch (Exception e) {
//string[] emailparams = new string[4];
//emailparams[0] = issueID.ToString();
//emailparams[1] = issueID.ToString();
//emailparams[2] = GlobalVars.hostURL;
//emailparams[3] =Session[GlobalVars.SESSION_USERNAME].ToString();
//en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, emailIst, null, subject, emailparams);
}
catch (Exception e)
{
string detailedException = ""; string detailedException = "";
try try {
{
detailedException = e.InnerException.ToString(); detailedException = e.InnerException.ToString();
} } catch {
catch
{
detailedException = e.Message; detailedException = e.Message;
} }
EventLogDMO.Add(new WinEventLog() { IssueID = issueId, UserID = @User.Identity.Name, DocumentType = docType, OperationType = "Email", Comments = "Approval reminders" }); EventLogDMO.Add(new WinEventLog() { IssueID = issueId, UserID = @User.Identity.Name, DocumentType = docType, OperationType = "Email", Comments = "Approval reminders" });
throw e; throw e;
}
} }
}
}
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,35 +3,29 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Web; using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
using Fab2ApprovalSystem.DMO; using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Misc; using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
namespace Fab2ApprovalSystem.Controllers;
[Authorize]
[SessionExpireFilter]
public class ManagerController : Controller {
namespace Fab2ApprovalSystem.Controllers
{
[Authorize]
[SessionExpireFilter]
public class ManagerController : Controller
{
UserAccountDMO userDMO = new UserAccountDMO(); UserAccountDMO userDMO = new UserAccountDMO();
AdminDMO adminDMO = new AdminDMO(); AdminDMO adminDMO = new AdminDMO();
TrainingDMO trainingDMO = new TrainingDMO(); TrainingDMO trainingDMO = new TrainingDMO();
LotDispositionDMO ldDMO = new LotDispositionDMO(); LotDispositionDMO ldDMO = new LotDispositionDMO();
private readonly AppSettings _AppSettings = GlobalVars.AppSettings;
/// <summary> public ActionResult Index() {
/// if ((bool)Session[GlobalVars.IS_MANAGER]) {
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
if ((bool)Session[GlobalVars.IS_MANAGER])
{
var model = userDMO.GetAllUsers(); var model = userDMO.GetAllUsers();
ViewBag.AllActiveUsers = userDMO.GetAllActiveUsers(); ViewBag.AllActiveUsers = userDMO.GetAllActiveUsers();
return View(model); return View(model);
} } else
else
return Content("Not Autthorized"); return Content("Not Autthorized");
} }
}
} }

View File

@ -3,46 +3,45 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Web; using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.DMO; using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Misc; using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
using Kendo.Mvc.Extensions; using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI; using Kendo.Mvc.UI;
namespace Fab2ApprovalSystem.Controllers namespace Fab2ApprovalSystem.Controllers;
{
[Authorize] [Authorize]
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] [OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
[SessionExpireFilter] [SessionExpireFilter]
public class PartsRequestController : Controller public class PartsRequestController : Controller {
{
const int WorkflowNumber = 1;
PartsRequestDMO prDMO = new PartsRequestDMO(); PartsRequestDMO prDMO = new PartsRequestDMO();
UserAccountDMO userDMO = new UserAccountDMO(); UserAccountDMO userDMO = new UserAccountDMO();
WorkflowDMO wfDMO = new WorkflowDMO(); WorkflowDMO wfDMO = new WorkflowDMO();
private readonly AppSettings _AppSettings = GlobalVars.AppSettings;
const int WorkflowNumber = 1; public PartsRequestController() {
public PartsRequestController()
{
ViewBag.ShowReAssignApprovers = false; ViewBag.ShowReAssignApprovers = false;
} }
protected ActionResult HandleValidationError(string msg) protected ActionResult HandleValidationError(string msg) {
{
Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest; Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest;
return Json(new { result = "Invalid", detail = msg }); return Json(new { result = "Invalid", detail = msg });
} }
protected ActionResult HandleAPIException(int issueID, Exception ex, string additionalKeys = "") protected ActionResult HandleAPIException(int issueID, Exception ex, string additionalKeys = "") {
{
HandleException(issueID, ex, additionalKeys); HandleException(issueID, ex, additionalKeys);
Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError; Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
return Json(new { result = "Error", issueID = issueID, detail = ex.Message }); return Json(new { result = "Error", issueID = issueID, detail = ex.Message });
} }
protected void HandleException(int issueID, Exception ex, string additionalKeys = "") protected void HandleException(int issueID, Exception ex, string additionalKeys = "") {
{
var st = new System.Diagnostics.StackTrace(); var st = new System.Diagnostics.StackTrace();
var sf = st.GetFrame(1); var sf = st.GetFrame(1);
@ -60,59 +59,44 @@ namespace Fab2ApprovalSystem.Controllers
additionalKeys); additionalKeys);
Exception x = ex; Exception x = ex;
while (x != null) while (x != null) {
{
detailedException += x.ToString(); detailedException += x.ToString();
detailedException += "\r\n=====\r\n"; detailedException += "\r\n=====\r\n";
x = x.InnerException; x = x.InnerException;
} }
Functions.WriteEvent(detailedException, System.Diagnostics.EventLogEntryType.Error); Functions.WriteEvent(_AppSettings, detailedException, System.Diagnostics.EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() EventLogDMO.Add(new WinEventLog() {
{
IssueID = issueID, IssueID = issueID,
UserID = @User.Identity.Name, UserID = @User.Identity.Name,
DocumentType = controller, DocumentType = controller,
OperationType = "Error", OperationType = "Error",
Comments = detailedException Comments = detailedException
}); });
} }
// GET: PartsRequest // GET: PartsRequest
public ActionResult Index() public ActionResult Index() {
{
return View(); return View();
} }
public ActionResult Edit(int issueID) public ActionResult Edit(int issueID) {
{
var pr = new PartsRequest(); var pr = new PartsRequest();
try try {
{
pr = prDMO.Get(issueID); pr = prDMO.Get(issueID);
if (pr == null) if (pr == null) {
{
ViewBag.ErrorDescription = "Document does not exist"; ViewBag.ErrorDescription = "Document does not exist";
return View("Error"); return View("Error");
} } else if (pr.CurrentStep < 0) {
else if (pr.CurrentStep < 0)
{
ViewBag.ErrorDescription = "Document is deleted"; ViewBag.ErrorDescription = "Document is deleted";
return View("Error"); return View("Error");
} } else if (pr.CurrentStep >= 1) {
else if (pr.CurrentStep >= 1)
{
return RedirectToAction("EditApproval", new { issueID = issueID }); return RedirectToAction("EditApproval", new { issueID = issueID });
} } else {
else if (pr.OriginatorID != (int)Session[GlobalVars.SESSION_USERID]) {
{ if (Convert.ToBoolean(Session[GlobalVars.IS_ADMIN]) == false) {
if (pr.OriginatorID != (int)Session[GlobalVars.SESSION_USERID])
{
if (Convert.ToBoolean(Session[GlobalVars.IS_ADMIN]) == false)
{
return RedirectToAction("ReadOnly", new { issueID = issueID }); return RedirectToAction("ReadOnly", new { issueID = issueID });
} }
} }
@ -120,60 +104,47 @@ namespace Fab2ApprovalSystem.Controllers
ViewBag.UserList = userDMO.GetAllUsers(); ViewBag.UserList = userDMO.GetAllUsers();
return View(pr); return View(pr);
} }
} } catch (Exception e) {
catch (Exception e)
{
HandleException(issueID, e); HandleException(issueID, e);
return View("Error"); return View("Error");
} }
} }
[HttpPost] [HttpPost]
public ActionResult Edit(PartsRequest pr) public ActionResult Edit(PartsRequest pr) {
{ try {
try
{
var pr_srv = prDMO.Get(pr.PRNumber); var pr_srv = prDMO.Get(pr.PRNumber);
if (pr_srv == null) if (pr_srv == null) {
{
return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Document does not exist"); return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Document does not exist");
} }
if (pr_srv.CurrentStep < 0) if (pr_srv.CurrentStep < 0) {
{
return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Document is deleted"); return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Document is deleted");
} }
if (pr_srv.CurrentStep >= 1) if (pr_srv.CurrentStep >= 1) {
{
return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Parts Request is not editable"); return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Parts Request is not editable");
} }
prDMO.Update(pr); prDMO.Update(pr);
return Content(""); return Content("");
} } catch (Exception e) {
catch (Exception e)
{
return HandleAPIException(pr.PRNumber, e); return HandleAPIException(pr.PRNumber, e);
} }
} }
public ActionResult EditApproval(int issueID) public ActionResult EditApproval(int issueID) {
{
var pr = new PartsRequest(); var pr = new PartsRequest();
try try {
{
int myUserID = (int)Session[GlobalVars.SESSION_USERID]; int myUserID = (int)Session[GlobalVars.SESSION_USERID];
pr = prDMO.Get(issueID); pr = prDMO.Get(issueID);
if (pr == null) if (pr == null) {
{
ViewBag.ErrorDescription = "Document does not exist"; ViewBag.ErrorDescription = "Document does not exist";
return View("Error"); return View("Error");
} }
if (pr.CurrentStep < 0) if (pr.CurrentStep < 0) {
{
ViewBag.ErrorDescription = "Document is deleted"; ViewBag.ErrorDescription = "Document is deleted";
return View("Error"); return View("Error");
} }
@ -183,12 +154,9 @@ namespace Fab2ApprovalSystem.Controllers
var userList = MiscDMO.GetPendingApproversListByDocument(issueID, Convert.ToByte(pr.CurrentStep), (int)GlobalVars.DocumentType.PartsRequest); var userList = MiscDMO.GetPendingApproversListByDocument(issueID, Convert.ToByte(pr.CurrentStep), (int)GlobalVars.DocumentType.PartsRequest);
ViewBag.IsApprover = (userList.Count(u => u.UserID == myUserID) > 0); ViewBag.IsApprover = (userList.Count(u => u.UserID == myUserID) > 0);
if (ViewBag.IsApprover == false) if (ViewBag.IsApprover == false) {
{ if (pr.OriginatorID != myUserID) {
if (pr.OriginatorID != myUserID) if (Convert.ToBoolean(Session[GlobalVars.IS_ADMIN]) == false) {
{
if (Convert.ToBoolean(Session[GlobalVars.IS_ADMIN]) == false)
{
return RedirectToAction("ReadOnly", new { issueID = issueID }); return RedirectToAction("ReadOnly", new { issueID = issueID });
} }
} }
@ -201,30 +169,24 @@ namespace Fab2ApprovalSystem.Controllers
ViewBag.ShowAddApprovers = ViewBag.IsAdmin || ViewBag.IsApprover || ViewBag.IsOriginator; ViewBag.ShowAddApprovers = ViewBag.IsAdmin || ViewBag.IsApprover || ViewBag.IsOriginator;
ViewBag.UserList = userDMO.GetAllUsers(); ViewBag.UserList = userDMO.GetAllUsers();
return View(pr); return View(pr);
} } catch (Exception e) {
catch (Exception e)
{
HandleException(issueID, e); HandleException(issueID, e);
return View("Error"); return View("Error");
} }
} }
public ActionResult ReadOnly(int issueID) public ActionResult ReadOnly(int issueID) {
{
var pr = new PartsRequest(); var pr = new PartsRequest();
try try {
{
int myUserID = (int)Session[GlobalVars.SESSION_USERID]; int myUserID = (int)Session[GlobalVars.SESSION_USERID];
pr = prDMO.Get(issueID); pr = prDMO.Get(issueID);
if (pr == null) if (pr == null) {
{
ViewBag.ErrorDescription = "Document does not exist"; ViewBag.ErrorDescription = "Document does not exist";
return View("Error"); return View("Error");
} }
if (pr.CurrentStep < 0) if (pr.CurrentStep < 0) {
{
ViewBag.ErrorDescription = "Document is deleted"; ViewBag.ErrorDescription = "Document is deleted";
return View("Error"); return View("Error");
} }
@ -233,19 +195,15 @@ namespace Fab2ApprovalSystem.Controllers
ViewBag.IsOriginator = (pr.OriginatorID == myUserID); ViewBag.IsOriginator = (pr.OriginatorID == myUserID);
ViewBag.UserList = userDMO.GetAllUsers(); ViewBag.UserList = userDMO.GetAllUsers();
return View(pr); return View(pr);
} } catch (Exception e) {
catch (Exception e)
{
HandleException(issueID, e); HandleException(issueID, e);
return View("Error"); return View("Error");
} }
} }
public ActionResult Create() public ActionResult Create() {
{
var pr = new PartsRequest(); var pr = new PartsRequest();
try try {
{
pr.OriginatorID = (int)Session[GlobalVars.SESSION_USERID]; pr.OriginatorID = (int)Session[GlobalVars.SESSION_USERID];
if (!CanCreatePartsRequest(pr.OriginatorID) && Convert.ToBoolean(Session[GlobalVars.CAN_CREATE_PARTS_REQUEST]) == false) if (!CanCreatePartsRequest(pr.OriginatorID) && Convert.ToBoolean(Session[GlobalVars.CAN_CREATE_PARTS_REQUEST]) == false)
@ -254,25 +212,19 @@ namespace Fab2ApprovalSystem.Controllers
prDMO.Insert(pr); prDMO.Insert(pr);
return RedirectToAction("Edit", new { issueID = pr.PRNumber }); return RedirectToAction("Edit", new { issueID = pr.PRNumber });
} } catch (Exception e) {
catch (Exception e)
{
return HandleAPIException(pr.PRNumber, e); return HandleAPIException(pr.PRNumber, e);
} }
} }
public static bool CanCreatePartsRequest(int userID) public static bool CanCreatePartsRequest(int userID) {
{
var adminDMO = new AdminDMO(); var adminDMO = new AdminDMO();
var role = adminDMO.GetSubRoles().Where(r => string.Equals(r.RoleName, "Parts Request", StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); var role = adminDMO.GetSubRoles().Where(r => string.Equals(r.RoleName, "Parts Request", StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
if (role != null) if (role != null) {
{
var subrole = role.SubRoles.FirstOrDefault(sr => string.Equals(sr.SubRoleCategoryItem, "Originator", StringComparison.OrdinalIgnoreCase)); var subrole = role.SubRoles.FirstOrDefault(sr => string.Equals(sr.SubRoleCategoryItem, "Originator", StringComparison.OrdinalIgnoreCase));
if (subrole != null) if (subrole != null) {
{
var users = adminDMO.GetAllUsersBySubRole(subrole.SubRoleID); var users = adminDMO.GetAllUsersBySubRole(subrole.SubRoleID);
if (users.Count(u => u.UserID == userID) > 0) if (users.Count(u => u.UserID == userID) > 0) {
{
return true; return true;
} }
} }
@ -280,62 +232,35 @@ namespace Fab2ApprovalSystem.Controllers
return false; return false;
} }
public ActionResult Attachment_Read([DataSourceRequest]DataSourceRequest request, int prNumber) public ActionResult Attachment_Read([DataSourceRequest] DataSourceRequest request, int prNumber) {
{ try {
try
{
return Json(prDMO.GetAttachments(prNumber).ToDataSourceResult(request), JsonRequestBehavior.AllowGet); return Json(prDMO.GetAttachments(prNumber).ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
} } catch (Exception ex) {
catch (Exception ex)
{
return HandleAPIException(prNumber, ex); return HandleAPIException(prNumber, ex);
} }
} }
[HttpPost] [HttpPost]
public ActionResult AttachSave(IEnumerable<HttpPostedFileBase> files, int prNumber) public ActionResult AttachSave(IEnumerable<HttpPostedFileBase> files, int prNumber) {
{
// The Name of the Upload component is "files" // The Name of the Upload component is "files"
if (files != null) if (files != null) {
{ int userId = (int)Session[GlobalVars.SESSION_USERID];
foreach (var file in files) foreach (var file in files) {
{ PartsRequestHelper.AttachSave(_AppSettings, prDMO, prNumber, userId, file.FileName, file.InputStream);
// Some browsers send file names with full path.
// We are only interested in the file name.
var fileName = System.IO.Path.GetFileName(file.FileName);
string prFolderPath = Functions.GetAttachmentFolder() + "PartsRequest\\" + prNumber.ToString();
var di = new System.IO.DirectoryInfo(prFolderPath);
if (!di.Exists)
di.Create();
var physicalPath = System.IO.Path.Combine(prFolderPath, fileName);
file.SaveAs(physicalPath);
var attach = new PartsRequestAttachment()
{
PRNumber = prNumber,
FileName = fileName,
UserID = (int)Session[GlobalVars.SESSION_USERID],
};
prDMO.InsertAttachment(attach);
} }
} }
return Content(""); return Content("");
} }
public FileResult DownloadFile(string attachmentID, string prNumber) public FileResult DownloadFile(string attachmentID, string prNumber) {
{
string fileName = prDMO.GetFileName(attachmentID); string fileName = prDMO.GetFileName(attachmentID);
string folderPath = Functions.GetAttachmentFolder() + "PartsRequest\\" + prNumber.ToString(); string folderPath = _AppSettings.AttachmentFolder + "PartsRequest\\" + prNumber.ToString();
var sDocument = System.IO.Path.Combine(folderPath, fileName); var sDocument = System.IO.Path.Combine(folderPath, fileName);
var FDir_AppData = Functions.GetAttachmentFolder(); var FDir_AppData = _AppSettings.AttachmentFolder;
if (!sDocument.StartsWith(FDir_AppData)) if (!sDocument.StartsWith(FDir_AppData)) {
{
// Ensure that we are serving file only inside the Fab2ApprovalAttachments folder // Ensure that we are serving file only inside the Fab2ApprovalAttachments folder
// and block requests outside like "../web.config" // and block requests outside like "../web.config"
throw new HttpException(403, "Forbidden"); throw new HttpException(403, "Forbidden");
@ -348,33 +273,25 @@ namespace Fab2ApprovalSystem.Controllers
} }
[HttpPost] [HttpPost]
public ActionResult DeleteAttachment(int attachmentID, string fileName, int prNumber) public ActionResult DeleteAttachment(int attachmentID, string fileName, int prNumber) {
{ try {
try if (ModelState.IsValid) {
{
if (ModelState.IsValid)
{
prDMO.DeleteAttachment(attachmentID); prDMO.DeleteAttachment(attachmentID);
var physicalPath = System.IO.Path.Combine(Functions.GetAttachmentFolder() + @"PartsRequest\" + prNumber.ToString(), fileName); var physicalPath = System.IO.Path.Combine(_AppSettings.AttachmentFolder + @"PartsRequest\" + prNumber.ToString(), fileName);
if (System.IO.File.Exists(physicalPath)) if (System.IO.File.Exists(physicalPath)) {
{
System.IO.File.Delete(physicalPath); System.IO.File.Delete(physicalPath);
} }
} }
return Content(""); return Content("");
} } catch (Exception e) {
catch (Exception e)
{
return HandleAPIException(prNumber, e, "AttachmentID=" + attachmentID.ToString()); return HandleAPIException(prNumber, e, "AttachmentID=" + attachmentID.ToString());
} }
} }
[HttpPost] [HttpPost]
public ActionResult Submit(int prNumber) public ActionResult Submit(int prNumber) {
{ try {
try
{
int myUserID = (int)Session[GlobalVars.SESSION_USERID]; int myUserID = (int)Session[GlobalVars.SESSION_USERID];
var pr = prDMO.Get(prNumber); var pr = prDMO.Get(prNumber);
@ -393,90 +310,67 @@ namespace Fab2ApprovalSystem.Controllers
var approvers = MiscDMO.GetApprovalsByDocument(prNumber, (int)GlobalVars.DocumentType.PartsRequest); var approvers = MiscDMO.GetApprovalsByDocument(prNumber, (int)GlobalVars.DocumentType.PartsRequest);
if (approvers.Count(a => a.Step.HasValue && a.Step.Value == 1 && a.UserID == myUserID) > 0) if (approvers.Count(a => a.Step.HasValue && a.Step.Value == 1 && a.UserID == myUserID) > 0) {
{
// Auto-Approve if the user is an approver for workflow step 1 // Auto-Approve if the user is an approver for workflow step 1
var c = Approve(prNumber, 1, "Auto-Approve"); var c = Approve(prNumber, 1, "Auto-Approve");
if (c != null && c is ContentResult) if (c != null && c is ContentResult) {
{
var result = ((ContentResult)c).Content; var result = ((ContentResult)c).Content;
if (!String.Equals(result, "OK")) if (!String.Equals(result, "OK"))
throw new Exception(result); throw new Exception(result);
} }
if (c != null && c is JsonResult) if (c != null && c is JsonResult)
return c; return c;
} } else {
else
{
// Do step 1 notification // Do step 1 notification
NotifyApprovers(prNumber, 1); NotifyApprovers(prNumber, 1);
} }
if (Request.IsAjaxRequest()) if (Request.IsAjaxRequest()) {
{
return Content("Redirect"); return Content("Redirect");
} } else {
else
{
return Content("Invalid"); return Content("Invalid");
} }
} } catch (Exception e) {
catch (Exception e)
{
return HandleAPIException(prNumber, e); return HandleAPIException(prNumber, e);
} }
} }
public ActionResult GetApproversList([DataSourceRequest]DataSourceRequest request, int issueID, byte step) public ActionResult GetApproversList([DataSourceRequest] DataSourceRequest request, int issueID, byte step) {
{ try {
try
{
return Json(MiscDMO.GetApproversListByDocument(issueID, step, (int)GlobalVars.DocumentType.PartsRequest).ToDataSourceResult(request)); return Json(MiscDMO.GetApproversListByDocument(issueID, step, (int)GlobalVars.DocumentType.PartsRequest).ToDataSourceResult(request));
} } catch (Exception e) {
catch (Exception e)
{
return HandleAPIException(issueID, e, "Step=" + step.ToString()); return HandleAPIException(issueID, e, "Step=" + step.ToString());
} }
} }
public ActionResult GetAllUsersList() public ActionResult GetAllUsersList() {
{ try {
try
{
UserAccountDMO userDMO = new UserAccountDMO(); UserAccountDMO userDMO = new UserAccountDMO();
IEnumerable<LoginModel> userlist = userDMO.GetAllUsers(); IEnumerable<LoginModel> userlist = userDMO.GetAllUsers();
return Json(userlist, JsonRequestBehavior.AllowGet); return Json(userlist, JsonRequestBehavior.AllowGet);
} } catch (Exception e) {
catch (Exception e)
{
return HandleAPIException(0, e); return HandleAPIException(0, e);
} }
} }
[HttpPost] [HttpPost]
public ActionResult ReAssignApproval(int issueID, int fromUserID, int userIDs, byte step) public ActionResult ReAssignApproval(int issueID, int fromUserID, int userIDs, byte step) {
{ try {
try
{
String email = wfDMO.ReAssignApproval( String email = wfDMO.ReAssignApproval(
issueID, fromUserID, userIDs, step, (int)GlobalVars.DocumentType.PartsRequest); issueID, fromUserID, userIDs, step, (int)GlobalVars.DocumentType.PartsRequest);
NotifyReAssignment(issueID, email); NotifyReAssignment(issueID, email);
return Content("OK"); return Content("OK");
} } catch (Exception e) {
catch (Exception e)
{
return HandleAPIException(issueID, e); return HandleAPIException(issueID, e);
} }
} }
[HttpPost] [HttpPost]
public ActionResult Approve(int prNumber, byte currentStep, string comments) public ActionResult Approve(int prNumber, byte currentStep, string comments) {
{ try {
try
{
bool lastStep = false; bool lastStep = false;
bool lastApproverInCurrentStep = false; bool lastApproverInCurrentStep = false;
int myUserID = (int)Session[GlobalVars.SESSION_USERID]; int myUserID = (int)Session[GlobalVars.SESSION_USERID];
@ -486,18 +380,20 @@ namespace Fab2ApprovalSystem.Controllers
if (pr == null) if (pr == null)
return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Document does not exist"); return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Document does not exist");
while (true) while (true) {
{
lastApproverInCurrentStep = wfDMO.Approve( lastApproverInCurrentStep = wfDMO.Approve(
prNumber, currentStep, comments, out lastStep, _AppSettings,
prNumber,
currentStep,
comments,
out lastStep,
(int)Session[GlobalVars.SESSION_USERID], (int)Session[GlobalVars.SESSION_USERID],
(int)GlobalVars.DocumentType.PartsRequest, (int)GlobalVars.DocumentType.PartsRequest,
WorkflowNumber); WorkflowNumber);
if (!lastApproverInCurrentStep) break; if (!lastApproverInCurrentStep)
if (lastStep) break;
{ if (lastStep) {
NotifyCompletion(prNumber); NotifyCompletion(prNumber);
break; break;
} }
@ -509,54 +405,32 @@ namespace Fab2ApprovalSystem.Controllers
return Content("No approvers found for next step, contact support!"); return Content("No approvers found for next step, contact support!");
// only continue with approving if the next step has me as an approver also // only continue with approving if the next step has me as an approver also
if (approvers.Count(a => a.Step.HasValue && a.Step.Value == currentStep && a.UserID == myUserID) == 0) if (approvers.Count(a => a.Step.HasValue && a.Step.Value == currentStep && a.UserID == myUserID) == 0) {
{
NotifyApprovers(prNumber, currentStep); NotifyApprovers(prNumber, currentStep);
break; break;
} }
} }
return Content("OK"); return Content("OK");
} } catch (Exception e) {
catch (Exception e)
{
return HandleAPIException(prNumber, e); return HandleAPIException(prNumber, e);
} }
} }
protected void SendEmailNotification(String subject, int prNumber, string toEmail, string emailTemplate) protected void NotifyReAssignment(int prNumber, string email) {
{
string senderName = "Parts Request";
EmailNotification en = new EmailNotification(subject, System.Configuration.ConfigurationManager.AppSettings["EmailTemplatesPath"]);
string[] emailparams = new string[5];
emailparams[0] = prNumber.ToString();
emailparams[1] = prNumber.ToString();
emailparams[2] = GlobalVars.hostURL;
emailparams[3] = "Parts Request";
emailparams[4] = Session[GlobalVars.SESSION_USERNAME].ToString();
String userEmail = toEmail;
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
}
protected void NotifyReAssignment(int prNumber, string email)
{
var pr = prDMO.Get(prNumber); var pr = prDMO.Get(prNumber);
if (pr == null) if (pr == null)
return; return;
SendEmailNotification( string username = Session[GlobalVars.SESSION_USERNAME].ToString();
PartsRequestHelper.SendEmailNotification(_AppSettings, username,
subject: String.Format("Parts Request Re-Assignment notice for # {0} - {1}", pr.PRNumber, pr.Title), subject: String.Format("Parts Request Re-Assignment notice for # {0} - {1}", pr.PRNumber, pr.Title),
prNumber: prNumber, prNumber: prNumber,
toEmail: email, toEmail: email,
emailTemplate: "PRReAssigned.txt"); emailTemplate: "PRReAssigned.txt");
EventLogDMO.Add(new WinEventLog() EventLogDMO.Add(new WinEventLog() {
{
IssueID = prNumber, IssueID = prNumber,
UserID = @User.Identity.Name, UserID = @User.Identity.Name,
DocumentType = "PR", DocumentType = "PR",
@ -565,24 +439,22 @@ namespace Fab2ApprovalSystem.Controllers
}); });
} }
protected void NotifyCompletion(int prNumber) protected void NotifyCompletion(int prNumber) {
{
var pr = prDMO.Get(prNumber); var pr = prDMO.Get(prNumber);
if (pr == null) if (pr == null)
return; return;
var u = userDMO.GetUserByID(pr.RequestorID); var u = userDMO.GetUserByID(pr.RequestorID);
if ((u != null) && (!String.IsNullOrWhiteSpace(u.Email))) if ((u != null) && (!String.IsNullOrWhiteSpace(u.Email))) {
{ string username = Session[GlobalVars.SESSION_USERNAME].ToString();
SendEmailNotification( PartsRequestHelper.SendEmailNotification(_AppSettings, username,
subject: String.Format("Parts Request Completion notice for # {0} - {1}", pr.PRNumber, pr.Title), subject: String.Format("Parts Request Completion notice for # {0} - {1}", pr.PRNumber, pr.Title),
prNumber: prNumber, prNumber: prNumber,
toEmail: u.Email, toEmail: u.Email,
emailTemplate: "PRCompleted.txt"); emailTemplate: "PRCompleted.txt");
EventLogDMO.Add(new WinEventLog() EventLogDMO.Add(new WinEventLog() {
{
IssueID = prNumber, IssueID = prNumber,
UserID = @User.Identity.Name, UserID = @User.Identity.Name,
DocumentType = "PR", DocumentType = "PR",
@ -592,24 +464,22 @@ namespace Fab2ApprovalSystem.Controllers
} }
} }
public void NotifyRejection(int prNumber) public void NotifyRejection(int prNumber) {
{
var pr = prDMO.Get(prNumber); var pr = prDMO.Get(prNumber);
if (pr == null) if (pr == null)
return; return;
var u = userDMO.GetUserByID(pr.OriginatorID); var u = userDMO.GetUserByID(pr.OriginatorID);
if ((u != null) && (!String.IsNullOrWhiteSpace(u.Email))) if ((u != null) && (!String.IsNullOrWhiteSpace(u.Email))) {
{ string username = Session[GlobalVars.SESSION_USERNAME].ToString();
SendEmailNotification( PartsRequestHelper.SendEmailNotification(_AppSettings, username,
subject: String.Format("Parts Request Rejection notice for # {0} - {1}", pr.PRNumber, pr.Title), subject: String.Format("Parts Request Rejection notice for # {0} - {1}", pr.PRNumber, pr.Title),
prNumber: prNumber, prNumber: prNumber,
toEmail: u.Email, toEmail: u.Email,
emailTemplate: "PRReject.txt"); emailTemplate: "PRReject.txt");
EventLogDMO.Add(new WinEventLog() EventLogDMO.Add(new WinEventLog() {
{
IssueID = prNumber, IssueID = prNumber,
UserID = @User.Identity.Name, UserID = @User.Identity.Name,
DocumentType = "PR", DocumentType = "PR",
@ -619,10 +489,8 @@ namespace Fab2ApprovalSystem.Controllers
} }
} }
protected void NotifyApprovers(int prNumber, byte step) protected void NotifyApprovers(int prNumber, byte step) {
{ try {
try
{
string emailSentList = ""; string emailSentList = "";
var pr = prDMO.Get(prNumber); var pr = prDMO.Get(prNumber);
@ -633,81 +501,69 @@ namespace Fab2ApprovalSystem.Controllers
List<string> emailList = MiscDMO.GetApproverEmailListByDocument( List<string> emailList = MiscDMO.GetApproverEmailListByDocument(
prNumber, step, (int)GlobalVars.DocumentType.PartsRequest).Distinct().ToList(); prNumber, step, (int)GlobalVars.DocumentType.PartsRequest).Distinct().ToList();
foreach (string email in emailList) foreach (string email in emailList) {
{ try {
try string username = Session[GlobalVars.SESSION_USERNAME].ToString();
{ PartsRequestHelper.SendEmailNotification(_AppSettings, username,
SendEmailNotification(
subject: String.Format("Parts Request Assignment notice for # {0} - {1}", pr.PRNumber, pr.Title), subject: String.Format("Parts Request Assignment notice for # {0} - {1}", pr.PRNumber, pr.Title),
prNumber: prNumber, prNumber: prNumber,
toEmail: email, toEmail: email,
emailTemplate: "PRAssigned.txt"); emailTemplate: "PRAssigned.txt");
} } catch (Exception ex) {
catch (Exception ex)
{
HandleException(prNumber, ex, "email=" + email); HandleException(prNumber, ex, "email=" + email);
} }
emailSentList += email + ","; emailSentList += email + ",";
} }
try try {
{
EventLogDMO.Add(new WinEventLog() { EventLogDMO.Add(new WinEventLog() {
IssueID = prNumber, UserID = @User.Identity.Name, DocumentType = "PR", OperationType = "Email", IssueID = prNumber,
Comments = "Approvers for Step " + step.ToString() + ":" + emailSentList }); UserID = @User.Identity.Name,
} DocumentType = "PR",
catch { } OperationType = "Email",
} Comments = "Approvers for Step " + step.ToString() + ":" + emailSentList
catch (Exception e) });
{ } catch { }
} catch (Exception e) {
HandleException(prNumber, e, "Step=" + step.ToString()); HandleException(prNumber, e, "Step=" + step.ToString());
} }
} }
[HttpPost] [HttpPost]
public ActionResult Reject(int prNumber, byte currentStep, string comments) public ActionResult Reject(int prNumber, byte currentStep, string comments) {
{ try {
try if (Session[GlobalVars.SESSION_USERID] != null) {
{
if (Session[GlobalVars.SESSION_USERID] != null)
{
wfDMO.Reject(prNumber, currentStep, comments, (int)Session[GlobalVars.SESSION_USERID], (int)GlobalVars.DocumentType.PartsRequest); wfDMO.Reject(prNumber, currentStep, comments, (int)Session[GlobalVars.SESSION_USERID], (int)GlobalVars.DocumentType.PartsRequest);
NotifyRejection(prNumber); NotifyRejection(prNumber);
} } else {
else
{
Response.Redirect("~/Account/Login"); Response.Redirect("~/Account/Login");
} }
return Content("OK"); return Content("OK");
} } catch (Exception e) {
catch (Exception e)
{
return HandleAPIException(prNumber, e); return HandleAPIException(prNumber, e);
} }
} }
public ActionResult ApprovalLogHistory_Read([DataSourceRequest] DataSourceRequest request, int prNumber) public ActionResult ApprovalLogHistory_Read([DataSourceRequest] DataSourceRequest request, int prNumber) {
{
return Json(prDMO.GetApprovalLogHistory(prNumber).ToDataSourceResult(request), JsonRequestBehavior.AllowGet); return Json(prDMO.GetApprovalLogHistory(prNumber).ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
} }
protected void NotifyAssignment(int prNumber, string email) protected void NotifyAssignment(int prNumber, string email) {
{
var pr = prDMO.Get(prNumber); var pr = prDMO.Get(prNumber);
if (pr == null) if (pr == null)
return; return;
SendEmailNotification( string username = Session[GlobalVars.SESSION_USERNAME].ToString();
PartsRequestHelper.SendEmailNotification(_AppSettings, username,
subject: String.Format("Parts Request Assignment notice for # {0} - {1}", pr.PRNumber, pr.Title), subject: String.Format("Parts Request Assignment notice for # {0} - {1}", pr.PRNumber, pr.Title),
prNumber: prNumber, prNumber: prNumber,
toEmail: email, toEmail: email,
emailTemplate: "PRAssigned.txt"); emailTemplate: "PRAssigned.txt");
EventLogDMO.Add(new WinEventLog() EventLogDMO.Add(new WinEventLog() {
{
IssueID = prNumber, IssueID = prNumber,
UserID = @User.Identity.Name, UserID = @User.Identity.Name,
DocumentType = "PR", DocumentType = "PR",
@ -717,37 +573,33 @@ namespace Fab2ApprovalSystem.Controllers
} }
[HttpPost] [HttpPost]
public void AddAdditionalApproval(int issueID, byte step, string userIDs) public void AddAdditionalApproval(int issueID, byte step, string userIDs) {
{
var emailArray = ""; var emailArray = "";
try try {
{
emailArray = wfDMO.AddAdditionalApproval(issueID, userIDs, step, (int)GlobalVars.DocumentType.PartsRequest); emailArray = wfDMO.AddAdditionalApproval(issueID, userIDs, step, (int)GlobalVars.DocumentType.PartsRequest);
} } catch (Exception e) {
catch (Exception e)
{
HandleAPIException(issueID, e); HandleAPIException(issueID, e);
} }
string emailSentList = ""; string emailSentList = "";
string[] emaiList = emailArray.Split(new char[] { '~' }); string[] emaiList = emailArray.Split(new char[] { '~' });
foreach (string email in emaiList) foreach (string email in emaiList) {
{ if (email.Length > 0) {
if (email.Length > 0)
{
NotifyAssignment(issueID, email); NotifyAssignment(issueID, email);
emailSentList += email + ","; emailSentList += email + ",";
} }
} }
try try {
{ EventLogDMO.Add(new WinEventLog() {
EventLogDMO.Add(new WinEventLog() { IssueID = issueID, UserID = @User.Identity.Name, DocumentType = "PR", IssueID = issueID,
OperationType = "Email", Comments = "Additional Approver: " + emailSentList }); UserID = @User.Identity.Name,
} DocumentType = "PR",
catch { } OperationType = "Email",
Comments = "Additional Approver: " + emailSentList
});
} catch { }
} }
}
} }

View File

@ -6,27 +6,27 @@ using System.Web.Mvc;
using Fab2ApprovalSystem.DMO; using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Misc; using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.ViewModels; using Fab2ApprovalSystem.ViewModels;
namespace Fab2ApprovalSystem.Controllers namespace Fab2ApprovalSystem.Controllers;
{
[Authorize] [Authorize]
[SessionExpireFilter] [SessionExpireFilter]
public class ReportsController : Controller public class ReportsController : Controller {
{
public const String specialNullString = "~NULL~"; public const String specialNullString = "~NULL~";
private readonly AppSettings _AppSettings = GlobalVars.AppSettings;
// GET: Export // GET: Export
public ActionResult Index() public ActionResult Index() {
{
UserAccountDMO userDMO = new UserAccountDMO(); UserAccountDMO userDMO = new UserAccountDMO();
ViewBag.HasITARAccess = userDMO.GetITARAccess((int)Session[GlobalVars.SESSION_USERID]); ViewBag.HasITARAccess = userDMO.GetITARAccess((int)Session[GlobalVars.SESSION_USERID]);
return View(); return View();
} }
public ActionResult Report(String id, String docType = "") public ActionResult Report(String id, String docType = "") {
{
if (String.IsNullOrEmpty(id)) if (String.IsNullOrEmpty(id))
return RedirectToAction("Index"); return RedirectToAction("Index");
@ -34,12 +34,10 @@ namespace Fab2ApprovalSystem.Controllers
if (!userDMO.GetITARAccess((int)Session[GlobalVars.SESSION_USERID])) if (!userDMO.GetITARAccess((int)Session[GlobalVars.SESSION_USERID]))
return View("UnAuthorizedAccess"); return View("UnAuthorizedAccess");
var m = new ReportViewModel(); var m = new ReportViewModel<System.Web.Mvc.SelectListItem>();
var reports = GetReportList(docType); var reports = GetReportList(docType);
foreach (var report in reports) foreach (var report in reports) {
{ if (String.Equals(report.ReportID, id, StringComparison.OrdinalIgnoreCase)) {
if (String.Equals(report.ReportID, id, StringComparison.OrdinalIgnoreCase))
{
m.ReportID = report.ReportID; m.ReportID = report.ReportID;
m.ReportName = report.Name; m.ReportName = report.Name;
m.Description = report.Description; m.Description = report.Description;
@ -47,9 +45,8 @@ namespace Fab2ApprovalSystem.Controllers
var c = SetupSSRSHelperClient(); var c = SetupSSRSHelperClient();
m.Parameters = c.GetReportParameters(report.FullPath).Select(parm => m.Parameters = c.GetReportParameters(report.FullPath).Select(parm => {
{ var r = new ReportParameterViewModel<System.Web.Mvc.SelectListItem>();
var r = new ReportParameterViewModel();
r.Visible = (parm.PromptUser.HasValue == false || parm.PromptUser == true) && !String.IsNullOrEmpty(parm.Prompt); r.Visible = (parm.PromptUser.HasValue == false || parm.PromptUser == true) && !String.IsNullOrEmpty(parm.Prompt);
r.Prompt = parm.Prompt; r.Prompt = parm.Prompt;
r.Name = parm.Name; r.Name = parm.Name;
@ -65,11 +62,9 @@ namespace Fab2ApprovalSystem.Controllers
r.ControlType = ParameterControlTypes.Textbox; r.ControlType = ParameterControlTypes.Textbox;
r.SelectList = null; r.SelectList = null;
if (parm.ValidValues != null) if (parm.ValidValues != null) {
{
r.SelectList = parm.ValidValues.Select(vv => { r.SelectList = parm.ValidValues.Select(vv => {
return new SelectListItem() return new SelectListItem() {
{
Text = vv.Value, Text = vv.Value,
Value = (vv.Key == null ? specialNullString : vv.Key), Value = (vv.Key == null ? specialNullString : vv.Key),
Selected = (parm.DefaultValues != null && parm.DefaultValues.Contains(vv.Key)) Selected = (parm.DefaultValues != null && parm.DefaultValues.Contains(vv.Key))
@ -90,26 +85,24 @@ namespace Fab2ApprovalSystem.Controllers
return View(m); return View(m);
} }
public SSRSHelper.SSRSClient SetupSSRSHelperClient() public SSRSHelper.SSRSClient SetupSSRSHelperClient() {
{
var useCfgForBindings = false; var useCfgForBindings = false;
if (String.Equals(System.Configuration.ConfigurationManager.AppSettings["SSRSBindingsByConfiguration"], "true", StringComparison.OrdinalIgnoreCase)) if (String.Equals(_AppSettings.SSRSBindingsByConfiguration, "true", StringComparison.OrdinalIgnoreCase))
useCfgForBindings = true; useCfgForBindings = true;
var c = new SSRSHelper.SSRSClient( var c = new SSRSHelper.SSRSClient(
Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SSRSBaseURL"]), Convert.ToString(_AppSettings.SSRSBaseURL),
Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SSRSDomain"]), Convert.ToString(_AppSettings.SSRSDomain),
Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SSRSUsername"]), Convert.ToString(_AppSettings.SSRSUsername),
Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SSRSPassword"]), Convert.ToString(_AppSettings.SSRSPassword),
useCfgForBindings); useCfgForBindings);
c.Initialize(); c.Initialize();
return c; return c;
} }
private IEnumerable<SSRSHelper.ReportInfo> GetReportList(String docType) private IEnumerable<SSRSHelper.ReportInfo> GetReportList(String docType) {
{ String folderName = Convert.ToString(_AppSettings.SSRSFolder);
String folderName = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SSRSFolder"]);
if (folderName.EndsWith("/")) if (folderName.EndsWith("/"))
folderName = folderName.TrimEnd('/'); folderName = folderName.TrimEnd('/');
if (!String.IsNullOrWhiteSpace(docType)) if (!String.IsNullOrWhiteSpace(docType))
@ -119,13 +112,12 @@ namespace Fab2ApprovalSystem.Controllers
return c.ListReports(folderName); return c.ListReports(folderName);
} }
public ActionResult GetReports(String docType) public ActionResult GetReports(String docType) {
{
var reports = GetReportList(docType); var reports = GetReportList(docType);
return Json(new { Data = return Json(new {
reports.Select(r => new ReportViewModel() Data =
{ reports.Select(r => new ReportViewModel<System.Web.Mvc.SelectListItem>() {
ReportName = r.Name ?? "", ReportName = r.Name ?? "",
Description = r.Description ?? "", Description = r.Description ?? "",
ReportID = r.ReportID ?? "", ReportID = r.ReportID ?? "",
@ -136,8 +128,7 @@ namespace Fab2ApprovalSystem.Controllers
} }
[HttpPost] [HttpPost]
public ActionResult ExportReport(String DocType, String ReportID) public ActionResult ExportReport(String DocType, String ReportID) {
{
var c = SetupSSRSHelperClient(); var c = SetupSSRSHelperClient();
var reports = GetReportList(DocType); var reports = GetReportList(DocType);
@ -152,17 +143,12 @@ namespace Fab2ApprovalSystem.Controllers
parms.Add("UserID", Convert.ToString(Session[GlobalVars.SESSION_USERID])); parms.Add("UserID", Convert.ToString(Session[GlobalVars.SESSION_USERID]));
parms.Add("BaseURL", GlobalVars.hostURL); parms.Add("BaseURL", GlobalVars.hostURL);
foreach (var rp in reportParms) foreach (var rp in reportParms) {
{ if (rp.MultiValue.HasValue && rp.MultiValue.Value) {
if (rp.MultiValue.HasValue && rp.MultiValue.Value) foreach (String v in Request.Params.GetValues("parm_" + rp.Name)) {
{
foreach (String v in Request.Params.GetValues("parm_" + rp.Name))
{
parms.Add(rp.Name, v); parms.Add(rp.Name, v);
} }
} } else {
else
{
String value = null; String value = null;
if (Request.Params.AllKeys.Contains("parm_" + rp.Name)) if (Request.Params.AllKeys.Contains("parm_" + rp.Name))
@ -174,10 +160,8 @@ namespace Fab2ApprovalSystem.Controllers
if ((rp.AllowBlank.HasValue == false || rp.AllowBlank.Value == false) && value == "") if ((rp.AllowBlank.HasValue == false || rp.AllowBlank.Value == false) && value == "")
value = null; value = null;
if (value == null) if (value == null) {
{ if (rp.Nullable.HasValue == false || rp.Nullable.Value == false) {
if (rp.Nullable.HasValue == false || rp.Nullable.Value == false)
{
if (rp.DefaultValues != null && rp.DefaultValues.Length > 0) if (rp.DefaultValues != null && rp.DefaultValues.Length > 0)
value = rp.DefaultValues[0]; value = rp.DefaultValues[0];
if (value == null) if (value == null)
@ -190,25 +174,18 @@ namespace Fab2ApprovalSystem.Controllers
} }
var b = c.ExportReport(report.FullPath, @User.Identity.Name, parms, "EXCELOPENXML"); var b = c.ExportReport(report.FullPath, @User.Identity.Name, parms, "EXCELOPENXML");
try try {
{
var b2 = c.FreezeExcelHeaders(b); var b2 = c.FreezeExcelHeaders(b);
return File(b2, "application/octet-stream", MakeFilename(report.Name) + ".xlsx"); return File(b2, "application/octet-stream", MakeFilename(report.Name) + ".xlsx");
} } catch {
catch
{
} }
return File(b, "application/octet-stream", MakeFilename(report.Name) + ".xlsx"); return File(b, "application/octet-stream", MakeFilename(report.Name) + ".xlsx");
} }
protected String MakeFilename(String reportName) protected String MakeFilename(String reportName) {
{
String r = ""; String r = "";
var invalidChars = System.IO.Path.GetInvalidFileNameChars(); char[] invalidChars = System.IO.Path.GetInvalidFileNameChars();
foreach (char c in reportName) foreach (char c in reportName) {
{
if (invalidChars.Contains(c)) if (invalidChars.Contains(c))
r += '_'; r += '_';
else else
@ -217,5 +194,4 @@ namespace Fab2ApprovalSystem.Controllers
return r; return r;
} }
}
} }

File diff suppressed because it is too large Load Diff

View File

@ -5,96 +5,64 @@ using System.Net;
using System.Net.Http; using System.Net.Http;
using System.Web.Http; using System.Web.Http;
using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
namespace Fab2ApprovalSystem.Controllers namespace Fab2ApprovalSystem.Controllers;
{
public class WebAPIController : ApiController public class WebAPIController : ApiController {
{
public TrainingController trainingFunctions = new TrainingController(); public TrainingController trainingFunctions = new TrainingController();
public CorrectiveActionController carFunctions = new CorrectiveActionController(); public CorrectiveActionController carFunctions = new CorrectiveActionController();
public AccountController accountFunctions = new AccountController(); public AccountController accountFunctions = new AccountController();
public HomeController homeFunctions = new HomeController(); public HomeController homeFunctions = new HomeController();
public string Get() private readonly AppSettings _AppSettings = GlobalVars.AppSettings;
{
public string Get() {
return "Welcome To Web API"; return "Welcome To Web API";
} }
public List<string> Get(int Id) public List<string> Get(int Id) {
{
return new List<string> { return new List<string> {
"Data1", "Data1",
"Data2" "Data2"
}; };
} }
public void Post() public void Post() {
{
} }
public HttpResponseMessage Post(HttpRequestMessage request, string action) public HttpResponseMessage Post(HttpRequestMessage request, string action) {
{ switch (action) {
switch (action)
{
case "TrainingReport": case "TrainingReport":
if (trainingFunctions.RunTrainingReport()) if (trainingFunctions.RunTrainingReport()) {
{
return request.CreateResponse(HttpStatusCode.OK); return request.CreateResponse(HttpStatusCode.OK);
} } else {
else
{
return request.CreateResponse(HttpStatusCode.InternalServerError);
}
case "TrainingReportOOO":
if (trainingFunctions.RunOOOTrainingReport())
{
return request.CreateResponse(HttpStatusCode.OK);
}
else
{
return request.CreateResponse(HttpStatusCode.InternalServerError); return request.CreateResponse(HttpStatusCode.InternalServerError);
} }
case "CARDueDates": case "CARDueDates":
if (carFunctions.ProcessCARDueDates()) if (carFunctions.ProcessCARDueDates()) {
{
return request.CreateResponse(HttpStatusCode.OK); return request.CreateResponse(HttpStatusCode.OK);
} } else {
else
{
return request.CreateResponse(HttpStatusCode.InternalServerError); return request.CreateResponse(HttpStatusCode.InternalServerError);
} }
case "ProcessOoO": case "ProcessOoO":
if (homeFunctions.ProcessOoO()) if (homeFunctions.ProcessOoO()) {
{
return request.CreateResponse(HttpStatusCode.OK); return request.CreateResponse(HttpStatusCode.OK);
} } else {
else
{
return request.CreateResponse(HttpStatusCode.InternalServerError); return request.CreateResponse(HttpStatusCode.InternalServerError);
} }
case "ExpireOoO": case "ExpireOoO":
if (homeFunctions.ExpireOoO()) if (homeFunctions.ExpireOoO()) {
{
return request.CreateResponse(HttpStatusCode.OK); return request.CreateResponse(HttpStatusCode.OK);
} } else {
else
{
return request.CreateResponse(HttpStatusCode.InternalServerError); return request.CreateResponse(HttpStatusCode.InternalServerError);
} }
case "ApprovalReminders": case "ApprovalReminders":
if (homeFunctions.ApprovalsReminderNotifications()) if (homeFunctions.ApprovalsReminderNotifications()) {
{
return request.CreateResponse(HttpStatusCode.OK); return request.CreateResponse(HttpStatusCode.OK);
} } else {
else
{
return request.CreateResponse(HttpStatusCode.InternalServerError); return request.CreateResponse(HttpStatusCode.InternalServerError);
} }
default: default:
return request.CreateResponse(HttpStatusCode.InternalServerError, "Action Not Found"); return request.CreateResponse(HttpStatusCode.InternalServerError, "Action Not Found");
}
} }
} }
} }

View File

@ -1,99 +1,73 @@
using Fab2ApprovalSystem.DMO; using System;
using Fab2ApprovalSystem.Models;
using Kendo.Mvc.UI;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Web; using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Models;
using Kendo.Mvc.Extensions; using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
namespace Fab2ApprovalSystem.Controllers;
public class WorkflowController : Controller {
namespace Fab2ApprovalSystem.Controllers
{
public class WorkflowController : Controller
{
//
//
// GET: /Workflow/Details/5 // GET: /Workflow/Details/5
public ActionResult Details(int id) public ActionResult Details(int id) {
{
return View(); return View();
} }
//
// GET: /Workflow/Create // GET: /Workflow/Create
public ActionResult Create() public ActionResult Create() {
{
return View(); return View();
} }
//
// POST: /Workflow/Create // POST: /Workflow/Create
[HttpPost] [HttpPost]
public ActionResult Create(FormCollection collection) public ActionResult Create(FormCollection collection) {
{ try {
try
{
// TODO: Add insert logic here // TODO: Add insert logic here
return RedirectToAction("Index"); return RedirectToAction("Index");
} } catch {
catch
{
return View(); return View();
} }
} }
//
// GET: /Workflow/Edit/5 // GET: /Workflow/Edit/5
public ActionResult Edit(int id) public ActionResult Edit(int id) {
{
return View(); return View();
} }
//
// POST: /Workflow/Edit/5 // POST: /Workflow/Edit/5
[HttpPost] [HttpPost]
public ActionResult Edit(int id, FormCollection collection) public ActionResult Edit(int id, FormCollection collection) {
{ try {
try
{
// TODO: Add update logic here // TODO: Add update logic here
return RedirectToAction("Index"); return RedirectToAction("Index");
} } catch {
catch
{
return View(); return View();
} }
} }
//
// GET: /Workflow/Delete/5 // GET: /Workflow/Delete/5
public ActionResult Delete(int id) public ActionResult Delete(int id) {
{
return View(); return View();
} }
//
// POST: /Workflow/Delete/5 // POST: /Workflow/Delete/5
[HttpPost] [HttpPost]
public ActionResult Delete(int id, FormCollection collection) public ActionResult Delete(int id, FormCollection collection) {
{ try {
try
{
// TODO: Add delete logic here // TODO: Add delete logic here
return RedirectToAction("Index"); return RedirectToAction("Index");
} } catch {
catch
{
return View(); return View();
} }
} }
}
} }

View File

@ -0,0 +1,59 @@
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Fab2ApprovalSystem.Models;
using Newtonsoft.Json;
namespace Fab2ApprovalSystem.DMO;
public class AccountDMO {
public static async Task<LoginResult> LoginAsync(HttpClient httpClient, LoginModel loginModel) {
LoginResult result;
HttpRequestMessage request = new(HttpMethod.Post, "auth/login");
AuthAttempt authAttempt = loginModel is null ? null : new AuthAttempt() {
LoginID = loginModel.LoginID,
Password = loginModel.Password
};
string json = authAttempt is null ? "{}" : JsonConvert.SerializeObject(authAttempt);
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
HttpResponseMessage httpResponseMessage = await httpClient.SendAsync(request);
if (!httpResponseMessage.IsSuccessStatusCode)
throw new Exception($"The authentication API failed, because {httpResponseMessage.ReasonPhrase}");
string responseContent = await httpResponseMessage.Content.ReadAsStringAsync();
result = JsonConvert.DeserializeObject<LoginResult>(responseContent);
return result;
}
public static async Task<LoginResult> ExternalAuthSetupAsync(HttpClient httpClient, AuthAttempt authAttempt) {
LoginResult result;
HttpRequestMessage request = new(HttpMethod.Post, "auth/refresh");
string json = authAttempt is null ? "{}" : JsonConvert.SerializeObject(authAttempt);
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
HttpResponseMessage httpResponseMessage = await httpClient.SendAsync(request);
if (!httpResponseMessage.IsSuccessStatusCode)
throw new Exception($"The authentication API failed, because {httpResponseMessage.ReasonPhrase}");
string responseContent = await httpResponseMessage.Content.ReadAsStringAsync();
result = JsonConvert.DeserializeObject<LoginResult>(responseContent);
return result;
}
}

View File

@ -1,28 +1,62 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Configuration;
using System.Data; using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
using System.Linq; using System.Linq;
using System.Web;
using Dapper;
using Fab2ApprovalSystem.Models;
using System.Text; using System.Text;
namespace Fab2ApprovalSystem.DMO using Dapper;
{
public class AdminDMO
{
private IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
private static FabApprovalTrainingEntities FabApprovalDB = new FabApprovalTrainingEntities();
/// <summary> using Fab2ApprovalSystem.Misc;
/// using Fab2ApprovalSystem.Models;
/// </summary>
/// <returns></returns> namespace Fab2ApprovalSystem.DMO;
public List<Role> GetSubRoles()
{ public class AdminDMO {
StringBuilder sql = new StringBuilder(); private readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
#if !NET8
private static FabApprovalTrainingEntities FabApprovalDB = new FabApprovalTrainingEntities();
#endif
public List<ParentChildModel> GetAllSubRoles(string showInactiveRoles = "") {
List<ParentChildModel> results = new();
List<Role> roles = GetSubRoles();
ParentChildModel child;
ParentChildModel parent;
foreach (Role r in roles) {
parent = new ParentChildModel {
id = r.RoleID,
parentid = -1,
text = r.RoleName,
value = r.RoleID.ToString()
};
foreach (SubRole sr in r.SubRoles) {
if (sr.Inactive) {
// hide inactive roles unless parameter says otherwise
if (showInactiveRoles.Equals("true") == false)
continue;
}
child = new ParentChildModel {
id = sr.SubRoleID,
parentid = r.RoleID,
text = sr.SubRoleCategoryItem + (sr.Inactive ? " (Inactive)" : ""),
value = sr.SubRoleID.ToString()
};
results.Add(child);
}
results.Add(parent);
};
return results;
}
public List<Role> GetSubRoles() {
StringBuilder sql = new();
sql.Append( sql.Append(
"SELECT R.RoleID, R.RoleName, SubRoleID, SubRoleCategoryItem, SR.RoleID, SR.Inactive " + "SELECT R.RoleID, R.RoleName, SubRoleID, SubRoleCategoryItem, SR.RoleID, SR.Inactive " +
"FROM vSubRoles SR " + "FROM vSubRoles SR " +
@ -30,233 +64,176 @@ namespace Fab2ApprovalSystem.DMO
"ORDER BY R.RoleID, SubRoleCategoryItem "); "ORDER BY R.RoleID, SubRoleCategoryItem ");
db.Open(); db.Open();
var lookup = new Dictionary<int, Role>(); Dictionary<int, Role> lookup = new();
List<Role> data = this.db.Query<Role, SubRole, Role>(sql.ToString(), List<Role> data = db.Query<Role, SubRole, Role>(sql.ToString(),
(parent, child) => (parent, child) => {
{
Role role; Role role;
if (!lookup.TryGetValue(parent.RoleID, out role)) if (!lookup.TryGetValue(parent.RoleID, out role)) {
{
lookup.Add(parent.RoleID, role = parent); lookup.Add(parent.RoleID, role = parent);
} }
//if (role.RoleID == null)
// role.SubRoles = new List<SubRole>();
role.SubRoles.Add(child); role.SubRoles.Add(child);
return role; return role;
}, },
splitOn: "SubRoleID").Distinct().ToList(); splitOn: "SubRoleID").Distinct().ToList();
return data; return data;
} }
/// <summary>
/// public List<UserSubRoles> GetUserSubRoles(int userId) {
/// </summary> DynamicParameters parameters = new();
/// /// <param name="userId"></param>
/// <returns></returns>
public List<UserSubRoles> GetUserSubRoles(int userId)
{
var parameters = new DynamicParameters();
parameters.Add("@UserId", userId); parameters.Add("@UserId", userId);
var userSubRoleList = this.db.Query<UserSubRoles>("GetSubRolesByUserId", parameters, commandType: CommandType.StoredProcedure).ToList(); List<UserSubRoles> userSubRoleList = db.Query<UserSubRoles>("GetSubRolesByUserId", parameters, commandType: CommandType.StoredProcedure).ToList();
return userSubRoleList; return userSubRoleList;
} }
public IEnumerable<LoginModel> GetAllUsersBySubRole(int subRole) {
/// <summary> StringBuilder sql = new();
///
/// </summary>
/// <param name="subRole"></param>
/// <returns></returns>
public IEnumerable<LoginModel> GetAllUsersBySubRole(int subRole)
{
StringBuilder sql = new StringBuilder();
sql.Append("SELECT FirstName + ' ' + LastName AS FullName , LoginID, FirstName, LastName, U.UserID, SubRoleID "); sql.Append("SELECT FirstName + ' ' + LastName AS FullName , LoginID, FirstName, LastName, U.UserID, SubRoleID ");
sql.Append("FROM UserSubRole UR "); sql.Append("FROM UserSubRole UR ");
sql.Append("INNER JOIN Users U ON UR.UserID = U.UserID "); sql.Append("INNER JOIN Users U ON UR.UserID = U.UserID ");
sql.Append("WHERE UR.SubRoleID = " + subRole.ToString() + " "); sql.Append("WHERE UR.SubRoleID = " + subRole.ToString() + " ");
sql.Append("ORDER BY FirstName"); sql.Append("ORDER BY FirstName");
return this.db.Query<LoginModel>(sql.ToString()).ToList(); return db.Query<LoginModel>(sql.ToString()).ToList();
} }
public void AddUserRoles(int subRole, string userids) {
/// <summary>
///
/// </summary>
/// <param name="subRole"></param>
/// <param name="userids"></param>
public void AddUserRoles(int subRole, string userids)
{
string sql; string sql;
string[] arrayOfUsers = userids.Split(new char[] { '~' }); string[] arrayOfUsers = userids.Split(new char[] { '~' });
for (int i = 0; i < arrayOfUsers.Length; i++) for (int i = 0; i < arrayOfUsers.Length; i++) {
{
sql = "INSERT INTO UserSubRole (UserID, SubRoleID) VALUES (" + arrayOfUsers[i] + ", " + subRole + " )"; sql = "INSERT INTO UserSubRole (UserID, SubRoleID) VALUES (" + arrayOfUsers[i] + ", " + subRole + " )";
this.db.Execute(sql); db.Execute(sql);
} }
} }
public void DeleteUserFromAllTrainingGroups(int userId) public void DeleteUserFromAllTrainingGroups(int userId) {
{
string sql = "DELETE FROM TrainingGroupMembers WHERE UserId = " + userId; string sql = "DELETE FROM TrainingGroupMembers WHERE UserId = " + userId;
db.Open();
this.db.Open(); db.Execute(sql);
this.db.Execute(sql);
return; return;
} }
/// <summary>
/// public void DeleteUserRoles(int subRole, string userids) {
/// </summary>
/// <param name="subRole"></param>
/// <param name="userids"></param>
public void DeleteUserRoles(int subRole, string userids)
{
string sql; string sql;
string[] arrayOfUsers = userids.Split(new char[] { '~' }); string[] arrayOfUsers = userids.Split(new char[] { '~' });
for (int i = 0; i < arrayOfUsers.Length; i++) for (int i = 0; i < arrayOfUsers.Length; i++) {
{
sql = "DELETE FROM UserSubRole WHERE UserID = " + arrayOfUsers[i] + " AND SubRoleID = " + subRole; sql = "DELETE FROM UserSubRole WHERE UserID = " + arrayOfUsers[i] + " AND SubRoleID = " + subRole;
this.db.Execute(sql); db.Execute(sql);
} }
} }
public List<TrainingReportUser> GetTrainingReportUsers()
{ #if !NET8
public List<TrainingReportUser> GetTrainingReportUsers() {
List<TrainingReportUser> CurrentReportUsers = (from a in FabApprovalDB.TrainingReportUsers select a).ToList(); List<TrainingReportUser> CurrentReportUsers = (from a in FabApprovalDB.TrainingReportUsers select a).ToList();
return CurrentReportUsers; return CurrentReportUsers;
} }
public List<TECNNotificationsUser> GetTECNNotificationUsers() #else
{ public List<TrainingReportUser> GetTrainingReportUsers() =>
throw new NotImplementedException();
#endif
#if !NET8
public List<TECNNotificationsUser> GetTECNNotificationUsers() {
List<TECNNotificationsUser> currentTECNNotificationUsers = (from a in FabApprovalDB.TECNNotificationsUsers select a).ToList(); List<TECNNotificationsUser> currentTECNNotificationUsers = (from a in FabApprovalDB.TECNNotificationsUsers select a).ToList();
return currentTECNNotificationUsers; return currentTECNNotificationUsers;
} }
#endif
public void TrainingReportAddUser(int userId) public void TrainingReportAddUser(int userId) {
{
string sql = "INSERT INTO TrainingReportUsers (UserId) " + "VALUES ('" + userId + "') "; string sql = "INSERT INTO TrainingReportUsers (UserId) " + "VALUES ('" + userId + "') ";
db.Open();
this.db.Open(); db.Execute(sql);
this.db.Execute(sql);
return; return;
} }
public void TECNExpirationAddUser(int userId)
{ public void TECNExpirationAddUser(int userId) {
string sql = "INSERT INTO TECNNotificationsUsers (UserId) " + "VALUES ('" + userId + "') "; string sql = "INSERT INTO TECNNotificationsUsers (UserId) " + "VALUES ('" + userId + "') ";
this.db.Open(); db.Open();
this.db.Execute(sql); db.Execute(sql);
return; return;
} }
public void TrainingReportDeleteUser(int userId)
{
var parameters = new DynamicParameters();
parameters = new DynamicParameters(); public void TrainingReportDeleteUser(int userId) {
DynamicParameters parameters = new();
parameters.Add("@UserID", userId); parameters.Add("@UserID", userId);
this.db.Execute("DeleteUserFromTrainingReport", parameters, commandType: CommandType.StoredProcedure); db.Execute("DeleteUserFromTrainingReport", parameters, commandType: CommandType.StoredProcedure);
return; return;
} }
public void TECNExpirationDeleteUser(int userId)
{
var parameters = new DynamicParameters();
parameters = new DynamicParameters(); public void TECNExpirationDeleteUser(int userId) {
DynamicParameters parameters = new();
parameters.Add("@UserID", userId); parameters.Add("@UserID", userId);
this.db.Execute("DeleteUserFromTECNReport", parameters, commandType: CommandType.StoredProcedure); db.Execute("DeleteUserFromTECNReport", parameters, commandType: CommandType.StoredProcedure);
return; return;
} }
public List<TrainingGroup> GetTrainingGroups()
{
//StringBuilder sql = new StringBuilder();
//sql.Append(
// "SELECT 'TrainingGroupID', TrainingGroupName " +
// "FROM TrainingGroups " +
// "ORDER BY TrainingGroupID ");
//db.Open(); #if !NET8
//var lookup = new Dictionary<int, TrainingGroup>(); public List<TrainingGroup> GetTrainingGroups() {
////List<TrainingGroup> data = this.db.Query<TrainingGroup>(sql.ToString()
//return this.db.Query<TrainingGroup>(sql.ToString()).ToList();
var TrainingGroups = from a in FabApprovalDB.TrainingGroups select a; var TrainingGroups = from a in FabApprovalDB.TrainingGroups select a;
List<TrainingGroup> GroupsToReturn = TrainingGroups.ToList(); List<TrainingGroup> GroupsToReturn = TrainingGroups.ToList();
return GroupsToReturn; return GroupsToReturn;
} }
public void AddNewTrainingGroup(string groupName)
{ public void AddNewTrainingGroup(string groupName) {
TrainingGroup existing = null; TrainingGroup existing = null;
//Check to see that the group name doesn't exist. // Check to see that the group name doesn't exist.
try try {
{
existing = (from a in FabApprovalDB.TrainingGroups where a.TrainingGroupName == groupName select a).FirstOrDefault(); existing = (from a in FabApprovalDB.TrainingGroups where a.TrainingGroupName == groupName select a).FirstOrDefault();
} } catch {
catch
{
// string test = "";
} }
if (existing == null) if (existing == null) {
{
//string sql = new StringBuilder();
string sql = "INSERT INTO TrainingGroups (TrainingGroupName) " + "VALUES ('" + groupName + "') "; string sql = "INSERT INTO TrainingGroups (TrainingGroupName) " + "VALUES ('" + groupName + "') ";
this.db.Open(); this.db.Open();
this.db.Execute(sql); this.db.Execute(sql);
return; return;
} } else {
else
{
return; return;
} }
} }
#endif
public void DeleteTrainingGroup(int groupID) public void DeleteTrainingGroup(int groupID) {
{ try {
try
{
string sql = "DELETE FROM TrainingGroups WHERE TrainingGroupID = " + groupID; string sql = "DELETE FROM TrainingGroups WHERE TrainingGroupID = " + groupID;
this.db.Open(); db.Open();
this.db.Execute(sql); db.Execute(sql);
sql = "DELETE FROM TrainingGroupMembers WHERE TrainingGroupID = " + groupID; sql = "DELETE FROM TrainingGroupMembers WHERE TrainingGroupID = " + groupID;
this.db.Execute(sql); db.Execute(sql);
return; return;
} catch {
}
} }
catch
{
} #if !NET8
} public List<TrainingGroupMember> GetTrainingGroupMembers(int GroupID) {
public List<TrainingGroupMember> GetTrainingGroupMembers(int GroupID)
{
return (from a in FabApprovalDB.TrainingGroupMembers where a.TrainingGroupID == GroupID select a).ToList(); return (from a in FabApprovalDB.TrainingGroupMembers where a.TrainingGroupID == GroupID select a).ToList();
} }
public void AddUserToGroup(int userId, int groupId)
{ public void AddUserToGroup(int userId, int groupId) {
UserAccountDMO userDB = new UserAccountDMO(); UserAccountDMO userDB = new UserAccountDMO();
string userFullName = userDB.GetUserByID(userId).FullName; string userFullName = userDB.GetUserByID(userId).FullName;
TrainingGroupMember existing = null; TrainingGroupMember existing = null;
existing = (from a in FabApprovalDB.TrainingGroupMembers where a.TrainingGroupID == groupId && a.UserID == userId select a).FirstOrDefault(); existing = (from a in FabApprovalDB.TrainingGroupMembers where a.TrainingGroupID == groupId && a.UserID == userId select a).FirstOrDefault();
if (existing == null) if (existing == null) {
{
var parameters = new DynamicParameters(); var parameters = new DynamicParameters();
parameters = new DynamicParameters(); parameters = new DynamicParameters();
@ -265,46 +242,58 @@ namespace Fab2ApprovalSystem.DMO
parameters.Add("@UserFullName", userFullName); parameters.Add("@UserFullName", userFullName);
this.db.Execute("AddUserToTrainingGroup", parameters, commandType: CommandType.StoredProcedure); this.db.Execute("AddUserToTrainingGroup", parameters, commandType: CommandType.StoredProcedure);
} } else {
else
{
throw new Exception("The user already exists in this training group."); throw new Exception("The user already exists in this training group.");
} }
//if (existing == null)
//{
// //string sql = new StringBuilder();
// string sql = "INSERT INTO TrainingGroupMembers (TrainingGroupID, UserID, FullName) " + "VALUES ('" + groupId + "','" + userId + "','" + userFullName + "') ";
// try
// {
// this.db.Open();
// this.db.Execute(sql);
// }
// catch(Exception e)
// {
// return;
// }
// return;
//}
//else
//{
// return;
} }
public void DeleteFromGroup(int userId, int groupId) #endif
{ public void DeleteFromGroup(int userId, int groupId) {
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
parameters = new DynamicParameters();
parameters.Add("@GroupID", groupId); parameters.Add("@GroupID", groupId);
parameters.Add("@UserID", userId); parameters.Add("@UserID", userId);
this.db.Execute("DeleteUserFromTrainingGroup", parameters, commandType: CommandType.StoredProcedure); db.Execute("DeleteUserFromTrainingGroup", parameters, commandType: CommandType.StoredProcedure);
return; return;
} }
public void DeleteUser(UserAccountDMO userDMO, TrainingDMO trainingDMO, LoginModel loginModel) {
if (loginModel != null) {
userDMO.DeleteUser(loginModel);
// Remove open trainings
// Get a list of all user assigned trainings.
List<TrainingAssignment> trainingAssignments = trainingDMO.GetTrainingAssignmentsByUserID(loginModel.UserID);
// Go Through that list.
foreach (var trainingAssignment in trainingAssignments) {
// Delete Any document acknowledgements.
trainingDMO.DeleteTrainingDocAck(trainingAssignment.ID);
// Delete the training assignment itself
trainingDMO.DeleteTrainingAssignment(trainingAssignment.ID);
// Check the parent Training task to set to to complete if applicable.
if (trainingDMO.CheckTrainingStatus(trainingAssignment.ID)) {
int TrainingID = trainingAssignment.TrainingID;
// Set Training status to complete
trainingDMO.UpdateTrainingStatus(TrainingID);
} }
}
// Remove user from any Training Groups
DeleteUserFromAllTrainingGroups(loginModel.UserID);
// Remove User from training report notifications
TrainingReportDeleteUser(loginModel.UserID);
// Remove user from TECN Expiration Notifications
TECNExpirationDeleteUser(loginModel.UserID);
// Get user subroles
List<UserSubRoles> userSubRoles = GetUserSubRoles(loginModel.UserID);
// Delete user from any subroles
foreach (var userSubRole in userSubRoles) {
DeleteUserRoles(userSubRole.SubRoleID, loginModel.UserID.ToString());
}
}
}
} }

View File

@ -1,23 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data; using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
using Fab2ApprovalSystem.Models;
using Dapper; using Dapper;
using System.Configuration;
namespace Fab2ApprovalSystem.DMO using Fab2ApprovalSystem.Misc;
{ using Fab2ApprovalSystem.Models;
public static class ApprovalLogDMO
{
private static IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString); namespace Fab2ApprovalSystem.DMO;
public static void Add(ApprovalLog appLog) public static class ApprovalLogDMO {
{
var parameters = new DynamicParameters(); private static readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
public static void Add(ApprovalLog appLog) {
DynamicParameters parameters = new();
parameters.Add("@IssueID", appLog.IssueID); parameters.Add("@IssueID", appLog.IssueID);
parameters.Add("@UserID", appLog.UserID); parameters.Add("@UserID", appLog.UserID);
parameters.Add("@OperationType", appLog.OperationType); parameters.Add("@OperationType", appLog.OperationType);
@ -26,7 +22,5 @@ namespace Fab2ApprovalSystem.DMO
parameters.Add("@DocumentTypeID", appLog.DocumentTypeID); parameters.Add("@DocumentTypeID", appLog.DocumentTypeID);
db.Execute("InsertApprovalLogByDocument", parameters, commandType: CommandType.StoredProcedure); db.Execute("InsertApprovalLogByDocument", parameters, commandType: CommandType.StoredProcedure);
}
} }
} }

View File

@ -1,148 +1,102 @@
using Dapper; using Dapper;
using Fab2ApprovalSystem.Models; using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.ViewModels;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Configuration;
using System.Data; using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
#if !NET8
using System.Data.Linq; using System.Data.Linq;
#endif
using System.Linq; using System.Linq;
using System.Text;
using System.Transactions; using System.Transactions;
using System.Web;
namespace Fab2ApprovalSystem.DMO using Fab2ApprovalSystem.Misc;
{ using Fab2ApprovalSystem.Utilities;
public class AuditDMO
{
private IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
WorkflowDMO wfDMO = new WorkflowDMO();
/// <summary> namespace Fab2ApprovalSystem.DMO;
///
/// </summary>
/// <param name="audit"></param>
/// <returns></returns>
public Audit InsertAudit(Audit audit)
{
var parameters = new DynamicParameters();
parameters = new DynamicParameters(); public class AuditDMO {
private readonly AppSettings _AppSettings;
private readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
public AuditDMO(AppSettings appSettings) =>
_AppSettings = appSettings;
public Audit InsertAudit(Audit audit) {
DynamicParameters parameters = new();
parameters.Add("@AuditNo", value: audit.AuditNo, dbType: DbType.Int32, direction: ParameterDirection.InputOutput); parameters.Add("@AuditNo", value: audit.AuditNo, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
parameters.Add("@OriginatorID", audit.OriginatorID); parameters.Add("@OriginatorID", audit.OriginatorID);
this.db.Execute("_8DInsertAuditItem", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DInsertAuditItem", parameters, commandType: CommandType.StoredProcedure);
audit.AuditNo = parameters.Get<int>("@AuditNo"); audit.AuditNo = parameters.Get<int>("@AuditNo");
return audit; return audit;
} }
/// <summary> public Audit GetAuditItem(int auditNo, int userID) {
/// Audit audit = new();
/// </summary>
/// <param name="auditNo"></param>
/// <param name="isITAR"></param>
/// <param name="userID"></param>
/// <returns></returns>
public Audit GetAuditItem(int auditNo, int userID)
{
Audit audit = new Audit();
//isITAR = 2; // isITAR = 2;
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
parameters.Add("@AuditNo", value: auditNo); parameters.Add("@AuditNo", value: auditNo);
parameters.Add("@UserID", userID); parameters.Add("@UserID", userID);
//parameters.Add("@IsITAR", value: isITAR, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
//audit = this.db.Query<Audit>("_8DGetAuditItem", parameters, commandType: CommandType.StoredProcedure).Single(); using (var multipleResultItems = db.QueryMultiple("_8DGetAuditItem", parameters, commandType: CommandType.StoredProcedure)) {
using (var multipleResultItems = this.db.QueryMultiple("_8DGetAuditItem", parameters, commandType: CommandType.StoredProcedure))
{
audit = multipleResultItems.Read<Audit>().SingleOrDefault(); audit = multipleResultItems.Read<Audit>().SingleOrDefault();
var auditors = multipleResultItems.Read<int>().ToList(); List<int> auditors = multipleResultItems.Read<int>().ToList();
if (audit != null && auditors != null) {
if (audit != null && auditors != null)
{
if (auditors.Count > 0) if (auditors.Count > 0)
audit.AuditorIDs.AddRange(auditors); audit.AuditorIDs.AddRange(auditors);
} }
var auditorTypes = multipleResultItems.Read<int>().ToList(); List<int> auditorTypes = multipleResultItems.Read<int>().ToList();
if (audit != null && auditorTypes != null) if (audit != null && auditorTypes != null) {
{
if (auditorTypes.Count > 0) if (auditorTypes.Count > 0)
audit.AuditTypeIDs.AddRange(auditorTypes); audit.AuditTypeIDs.AddRange(auditorTypes);
} }
var auditorAreas = multipleResultItems.Read<int>().ToList(); List<int> auditorAreas = multipleResultItems.Read<int>().ToList();
if (audit != null && auditorAreas != null) if (audit != null && auditorAreas != null) {
{
if (auditorAreas.Count > 0) if (auditorAreas.Count > 0)
audit.AuditedAreaIDs.AddRange(auditorAreas); audit.AuditedAreaIDs.AddRange(auditorAreas);
} }
} }
//FabApprovalSystemEntitiesAll auditDb = new FabApprovalSystemEntitiesAll();
//var auditedStandardIDs = (from a in auditDb.C_8DAuditedStandardByAudit where a.AuditNo == audit.AuditNo select a.AuditedStandardID).ToList();
//foreach (var id in auditedStandardIDs)
//{
// audit.AuditedStandardIDs.Add(id);
//}
return audit; return audit;
} }
/// <summary> public Audit GetAuditItemReadOnly(int auditNo, int userID) {
/// Audit audit = new();
/// </summary>
/// <param name="auditNo"></param>
/// <param name="userID"></param>
/// <returns></returns>
public Audit GetAuditItemReadOnly(int auditNo, int userID)
{
Audit audit = new Audit();
//isITAR = 2; DynamicParameters parameters = new();
var parameters = new DynamicParameters();
parameters.Add("@AuditNo", value: auditNo); parameters.Add("@AuditNo", value: auditNo);
parameters.Add("@UserID", userID); parameters.Add("@UserID", userID);
//parameters.Add("@IsITAR", value: isITAR, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
//audit = this.db.Query<Audit>("_8DGetAuditItem", parameters, commandType: CommandType.StoredProcedure).Single(); using (var multipleResultItems = db.QueryMultiple("_8DGetAuditItemReadOnly", parameters, commandType: CommandType.StoredProcedure)) {
using (var multipleResultItems = this.db.QueryMultiple("_8DGetAuditItemReadOnly", parameters, commandType: CommandType.StoredProcedure))
{
audit = multipleResultItems.Read<Audit>().SingleOrDefault(); audit = multipleResultItems.Read<Audit>().SingleOrDefault();
var auditors = multipleResultItems.Read<int>().ToList(); List<int> auditors = multipleResultItems.Read<int>().ToList();
if (audit != null && auditors != null) {
if (audit != null && auditors != null)
{
if (auditors.Count > 0) if (auditors.Count > 0)
audit.AuditorIDs.AddRange(auditors); audit.AuditorIDs.AddRange(auditors);
} }
var auditorTypes = multipleResultItems.Read<int>().ToList(); List<int> auditorTypes = multipleResultItems.Read<int>().ToList();
if (audit != null && auditorTypes != null) if (audit != null && auditorTypes != null) {
{
if (auditorTypes.Count > 0) if (auditorTypes.Count > 0)
audit.AuditTypeIDs.AddRange(auditorTypes); audit.AuditTypeIDs.AddRange(auditorTypes);
} }
var auditorAreas = multipleResultItems.Read<int>().ToList(); List<int> auditorAreas = multipleResultItems.Read<int>().ToList();
if (audit != null && auditorAreas != null) if (audit != null && auditorAreas != null) {
{
if (auditorAreas.Count > 0) if (auditorAreas.Count > 0)
audit.AuditedAreaIDs.AddRange(auditorAreas); audit.AuditedAreaIDs.AddRange(auditorAreas);
} }
@ -151,290 +105,165 @@ namespace Fab2ApprovalSystem.DMO
return audit; return audit;
} }
public IEnumerable<AuditType> GetAuditTypeList() {
DynamicParameters parameters = new();
/// <summary> List<AuditType> auditTypeList = db.Query<AuditType>("_8DGetAuditTypeList", parameters, commandType: CommandType.StoredProcedure).ToList();
///
/// </summary>
/// <returns></returns>
public IEnumerable<AuditType> GetAuditTypeList()
{
var parameters = new DynamicParameters();
var auditTypeList = this.db.Query<AuditType>("_8DGetAuditTypeList", parameters, commandType: CommandType.StoredProcedure).ToList();
return auditTypeList; return auditTypeList;
} }
public IEnumerable<C_8DAuditedStandard> GetAuditStandardList() #if !NET8
{ public IEnumerable<C_8DAuditedStandard> GetAuditStandardList() {
FabApprovalSystemEntitiesAll db = new FabApprovalSystemEntitiesAll(); FabApprovalSystemEntitiesAll db = new FabApprovalSystemEntitiesAll();
var auditStandardList = from a in db.C_8DAuditedStandard select a; var auditStandardList = from a in db.C_8DAuditedStandard select a;
return auditStandardList; return auditStandardList;
} }
/// <summary> #endif
/// public IEnumerable<Auditor> GetAuditorList() {
/// </summary> DynamicParameters parameters = new();
/// <returns></returns>
public IEnumerable<Auditor> GetAuditorList()
{
var parameters = new DynamicParameters();
List<Auditor> auditorList = db.Query<Auditor>("_8DGetAuditorList", parameters, commandType: CommandType.StoredProcedure).ToList();
var auditorList = this.db.Query<Auditor>("_8DGetAuditorList", parameters, commandType: CommandType.StoredProcedure).ToList();
return auditorList; return auditorList;
} }
public IEnumerable<AuditedArea> GetAuditAreaList() {
DynamicParameters parameters = new();
/// <summary> List<AuditedArea> auditAreaList = db.Query<AuditedArea>("_8DGetAuditAreaList", parameters, commandType: CommandType.StoredProcedure).ToList();
///
/// </summary>
/// <returns></returns>
public IEnumerable<AuditedArea> GetAuditAreaList()
{
var parameters = new DynamicParameters();
var auditAreaList = this.db.Query<AuditedArea>("_8DGetAuditAreaList", parameters, commandType: CommandType.StoredProcedure).ToList();
return auditAreaList; return auditAreaList;
} }
public void UpdateAudit(Audit audit, int userID) {
/// <summary>
///
/// </summary>
/// <param name="audit"></param>
public void UpdateAudit(Audit audit, int userID)
{
int result = 0; int result = 0;
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
using(var transaction = new TransactionScope()) using (TransactionScope transaction = new()) {
{ try {
try
{
parameters.Add("AuditNo", audit.AuditNo); parameters.Add("AuditNo", audit.AuditNo);
parameters.Add("Title", audit.AuditTitle); parameters.Add("Title", audit.AuditTitle);
//parameters.Add("AuditTypeID", audit.AuditTypeID);
parameters.Add("AuditDate", audit.AuditDate); parameters.Add("AuditDate", audit.AuditDate);
parameters.Add("AuditStatus", audit.AuditStatus); parameters.Add("AuditStatus", audit.AuditStatus);
parameters.Add("AuditScore", audit.AuditScore); parameters.Add("AuditScore", audit.AuditScore);
//parameters.Add("AuditedAreaID", audit.AuditedAreaID);
parameters.Add("Auditees", audit.Auditees); parameters.Add("Auditees", audit.Auditees);
this.db.Execute("_8DUpdateAudit", param: parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DUpdateAudit", param: parameters, commandType: CommandType.StoredProcedure);
parameters = new DynamicParameters(); parameters = new DynamicParameters();
parameters.Add("@AuditNo", audit.AuditNo); parameters.Add("@AuditNo", audit.AuditNo);
this.db.Execute("_8DDeleteAuditors", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DDeleteAuditors", parameters, commandType: CommandType.StoredProcedure);
List<int> auditors = audit.AuditorIDs; List<int> auditors = audit.AuditorIDs;
if (auditors != null) if (auditors != null) {
{ foreach (int auditorID in auditors) {
foreach (int auditorID in auditors)
{
parameters = new DynamicParameters(); parameters = new DynamicParameters();
parameters.Add("@AuditNo", audit.AuditNo); parameters.Add("@AuditNo", audit.AuditNo);
parameters.Add("@AuditorID", auditorID); parameters.Add("@AuditorID", auditorID);
this.db.Execute("_8DInsertAuditor", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DInsertAuditor", parameters, commandType: CommandType.StoredProcedure);
} }
} }
parameters = new DynamicParameters(); parameters = new DynamicParameters();
parameters.Add("@AuditNo", audit.AuditNo); parameters.Add("@AuditNo", audit.AuditNo);
this.db.Execute("_8DDeleteAuditTypes", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DDeleteAuditTypes", parameters, commandType: CommandType.StoredProcedure);
List<int> auditTypes = audit.AuditTypeIDs; List<int> auditTypes = audit.AuditTypeIDs;
if (auditTypes != null) if (auditTypes != null) {
{ foreach (int auditTypeID in auditTypes) {
foreach (int auditTypeID in auditTypes)
{
parameters = new DynamicParameters(); parameters = new DynamicParameters();
parameters.Add("@AuditNo", audit.AuditNo); parameters.Add("@AuditNo", audit.AuditNo);
parameters.Add("@AuditTypeID", auditTypeID); parameters.Add("@AuditTypeID", auditTypeID);
this.db.Execute("_8DInsertAuditType", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DInsertAuditType", parameters, commandType: CommandType.StoredProcedure);
} }
} }
parameters = new DynamicParameters(); parameters = new DynamicParameters();
parameters.Add("@AuditNo", audit.AuditNo); parameters.Add("@AuditNo", audit.AuditNo);
this.db.Execute("_8DDeleteAuditedAreas", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DDeleteAuditedAreas", parameters, commandType: CommandType.StoredProcedure);
List<int> auditedAreas = audit.AuditedAreaIDs; List<int> auditedAreas = audit.AuditedAreaIDs;
if (auditedAreas != null) if (auditedAreas != null) {
{ foreach (int auditedAreaID in auditedAreas) {
foreach (int auditedAreaID in auditedAreas)
{
parameters = new DynamicParameters(); parameters = new DynamicParameters();
parameters.Add("@AuditNo", audit.AuditNo); parameters.Add("@AuditNo", audit.AuditNo);
parameters.Add("@AuditedAreaID", auditedAreaID); parameters.Add("@AuditedAreaID", auditedAreaID);
this.db.Execute("_8DInsertAuditedArea", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DInsertAuditedArea", parameters, commandType: CommandType.StoredProcedure);
} }
} }
transaction.Complete(); transaction.Complete();
} catch (Exception ex) {
}
catch (Exception ex)
{
transaction.Dispose(); transaction.Dispose();
throw new Exception(ex.Message + " " + ex.InnerException); throw new Exception(ex.Message + " " + ex.InnerException);
} }
} }
//FabApprovalSystemEntitiesAll auditDb = new FabApprovalSystemEntitiesAll();
//List<int> auditedStandards = audit.AuditedStandardIDs;
//if (auditedStandards != null)
//{
// foreach (int auditedStandard in auditedStandards)
// {
// var auditStandardExists = (from a in auditDb.C_8DAuditedStandardByAudit where a.AuditNo == audit.AuditNo && a.AuditedStandardID == auditedStandard select a).ToList();
// if (auditStandardExists.Count() <= 0)
// {
// C_8DAuditedStandardByAudit standard = new C_8DAuditedStandardByAudit
// {
// AuditNo = audit.AuditNo,
// AuditedStandardID = auditedStandard
// };
// auditDb.C_8DAuditedStandardByAudit.Add(standard);
// auditDb.SaveChanges();
// }
// }
//}
//parameters = new DynamicParameters();
//parameters.Add("AuditNo", audit.AuditNo);
//this.db.Execute("_8DUpdateAuditScore", parameters, commandType: CommandType.StoredProcedure);
} }
public IEnumerable<AuditReportAttachment> GetAuditReportAttachments(int auditNo) {
DynamicParameters parameters = new();
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
/// <returns></returns>
public IEnumerable<AuditReportAttachment> GetAuditReportAttachments(int auditNo)
{
var parameters = new DynamicParameters();
parameters.Add("@AuditNo", auditNo); parameters.Add("@AuditNo", auditNo);
var data = this.db.Query<AuditReportAttachment>("_8DGetAuditReportAttachments", parameters, commandType: CommandType.StoredProcedure).ToList(); List<AuditReportAttachment> data = db.Query<AuditReportAttachment>("_8DGetAuditReportAttachments", parameters, commandType: CommandType.StoredProcedure).ToList();
return data; return data;
} }
/// <summary> public IEnumerable<AuditReportAttachment> GetCAFindingsItemAttachments(int caFindingsID) {
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="auditNo"></param>
/// <returns></returns>
public IEnumerable<AuditReportAttachment> GetCAFindingsItemAttachments(int caFindingsID)
{
var parameters = new DynamicParameters();
parameters.Add("@CAFindingsID", caFindingsID); parameters.Add("@CAFindingsID", caFindingsID);
var data = this.db.Query<AuditReportAttachment>("_8DGetCAFindingsItemAttachments", parameters, commandType: CommandType.StoredProcedure).ToList(); List<AuditReportAttachment> data = db.Query<AuditReportAttachment>("_8DGetCAFindingsItemAttachments", parameters, commandType: CommandType.StoredProcedure).ToList();
return data; return data;
} }
/// <summary> public IEnumerable<CAUserList> GetUserList() {
/// DynamicParameters parameters = new();
/// </summary> List<CAUserList> userList = db.Query<CAUserList>("_8DGetUserList", parameters, commandType: CommandType.StoredProcedure).ToList();
/// <returns></returns>
public IEnumerable<CAUserList> GetUserList()
{
var parameters = new DynamicParameters();
var userList = this.db.Query<CAUserList>("_8DGetUserList", parameters, commandType: CommandType.StoredProcedure).ToList();
return userList; return userList;
} }
public AuditFindings GetAuditFindingsByID(int auditFindingsID) public AuditFindings GetAuditFindingsByID(int auditFindingsID) {
{ DynamicParameters parameters = new();
var parameters = new DynamicParameters();
parameters.Add("@AuditFindingsID", auditFindingsID); parameters.Add("@AuditFindingsID", auditFindingsID);
var data = this.db.Query<AuditFindings>("SELECT * FROM _8DAuditFinding WHERE ID = @AuditFindingsID", parameters).SingleOrDefault(); var data = db.Query<AuditFindings>("SELECT * FROM _8DAuditFinding WHERE ID = @AuditFindingsID", parameters).SingleOrDefault();
return data; return data;
} }
public IEnumerable<int> GetAuditFindingCategoryIdsByFindingId(int auditFindingsID)
{ public IEnumerable<int> GetAuditFindingCategoryIdsByFindingId(int auditFindingsID) {
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
parameters.Add("@AuditFindingID", auditFindingsID); parameters.Add("@AuditFindingID", auditFindingsID);
var data = this.db.Query<int>("SELECT CategoryID FROM _8DAuditFindingCategoryByAuditFinding WHERE AuditFindingID = @AuditFindingID", parameters).ToList(); List<int> data = db.Query<int>("SELECT CategoryID FROM _8DAuditFindingCategoryByAuditFinding WHERE AuditFindingID = @AuditFindingID", parameters).ToList();
return data; return data;
} }
/// <summary>
/// public IEnumerable<AuditFindings> GetAuditFindingsList(int auditNo) {
/// </summary> DynamicParameters parameters = new();
/// <param name="auditNo"></param>
/// <returns></returns>
public IEnumerable<AuditFindings> GetAuditFindingsList(int auditNo)
{
var parameters = new DynamicParameters();
parameters.Add("@AuditNo", auditNo); parameters.Add("@AuditNo", auditNo);
var data = this.db.Query<AuditFindings>("_8DGetAuditFindingsList", parameters, commandType: CommandType.StoredProcedure).ToList(); List<AuditFindings> data = db.Query<AuditFindings>("_8DGetAuditFindingsList", parameters, commandType: CommandType.StoredProcedure).ToList();
return data; return data;
} }
public void DeleteAuditReportAttachment(int attachmentID) {
DynamicParameters parameters = new();
/// <summary>
///
/// </summary>
/// <param name="attachmentID"></param>
public void DeleteAuditReportAttachment(int attachmentID)
{
var parameters = new DynamicParameters();
parameters.Add("@AttachmentID", attachmentID); parameters.Add("@AttachmentID", attachmentID);
this.db.Execute("_8DDeleteAuditReportAttachments", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DDeleteAuditReportAttachments", parameters, commandType: CommandType.StoredProcedure);
} }
public void InsertAuditReportAttachment(AuditReportAttachment attach) {
/// <summary> DynamicParameters parameters = new();
///
/// </summary>
/// <param name="attach"></param>
public void InsertAuditReportAttachment(AuditReportAttachment attach)
{
var parameters = new DynamicParameters();
parameters.Add("@AuditNo", attach.AuditNo); parameters.Add("@AuditNo", attach.AuditNo);
parameters.Add("@CAFindingsID", attach.CAFindingsID); parameters.Add("@CAFindingsID", attach.CAFindingsID);
parameters.Add("@UploadedByID", attach.UploadedByID); parameters.Add("@UploadedByID", attach.UploadedByID);
parameters.Add("@FileName", attach.FileName); parameters.Add("@FileName", attach.FileName);
parameters.Add("@FileGUID", attach.FileGUID); parameters.Add("@FileGUID", attach.FileGUID);
this.db.Execute("_8DInsertAuditReportAttachment", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DInsertAuditReportAttachment", parameters, commandType: CommandType.StoredProcedure);
} }
internal string GetAuditReportAttachmentFileName(string fileGUID) {
/// <summary> DynamicParameters parameters = new();
///
/// </summary>
/// <param name="fileGUID"></param>
/// <returns></returns>
internal string GetAuditReportAttachmentFileName(string fileGUID)
{
var parameters = new DynamicParameters();
parameters.Add("@FileGUID", fileGUID); parameters.Add("@FileGUID", fileGUID);
var fileName = this.db.Query<string>("_8DGetAuditReportAttachmentFileName", parameters, commandType: CommandType.StoredProcedure).Single(); var fileName = db.Query<string>("_8DGetAuditReportAttachmentFileName", parameters, commandType: CommandType.StoredProcedure).Single();
return fileName; return fileName;
} }
/// <summary> internal void InsertAuditFindingsItem(AuditFindings data) {
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="data"></param>
internal void InsertAuditFindingsItem(AuditFindings data)
{
var parameters = new DynamicParameters();
parameters.Add("@AuditNo", data.AuditNo); parameters.Add("@AuditNo", data.AuditNo);
parameters.Add("@Findings", data.Findings); parameters.Add("@Findings", data.Findings);
parameters.Add("@ViolatedClause", data.ViolatedClause); parameters.Add("@ViolatedClause", data.ViolatedClause);
@ -443,18 +272,11 @@ namespace Fab2ApprovalSystem.DMO
parameters.Add("@CANo", data.CANo); parameters.Add("@CANo", data.CANo);
parameters.Add("@Title", data.Title); parameters.Add("@Title", data.Title);
db.Execute("_8DInsertAuditFinding", parameters, commandType: CommandType.StoredProcedure);
this.db.Execute("_8DInsertAuditFinding", parameters, commandType: CommandType.StoredProcedure);
} }
internal void UpdateAuditFindingsItem(AuditFindings data) {
/// <summary> DynamicParameters parameters = new();
///
/// </summary>
/// <param name="data"></param>
internal void UpdateAuditFindingsItem(AuditFindings data)
{
var parameters = new DynamicParameters();
parameters.Add("@AuditFindingsID", data.ID); parameters.Add("@AuditFindingsID", data.ID);
parameters.Add("@Findings", data.Findings); parameters.Add("@Findings", data.Findings);
parameters.Add("@ViolatedClause", data.ViolatedClause); parameters.Add("@ViolatedClause", data.ViolatedClause);
@ -463,104 +285,53 @@ namespace Fab2ApprovalSystem.DMO
parameters.Add("@CANo", data.CANo); parameters.Add("@CANo", data.CANo);
parameters.Add("@Title", data.Title); parameters.Add("@Title", data.Title);
db.Execute("_8DUpdateAuditFinding", parameters, commandType: CommandType.StoredProcedure);
this.db.Execute("_8DUpdateAuditFinding", parameters, commandType: CommandType.StoredProcedure);
} }
internal void DeleteAuditFindingsItem(int auditFindingsID) {
/// <summary> DynamicParameters parameters = new();
///
/// </summary>
/// <param name="auditFindingsID"></param>
internal void DeleteAuditFindingsItem(int auditFindingsID )
{
var parameters = new DynamicParameters();
parameters.Add("@AuditFindingsID", auditFindingsID); parameters.Add("@AuditFindingsID", auditFindingsID);
this.db.Execute("_8DDeleteAuditFinding", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DDeleteAuditFinding", parameters, commandType: CommandType.StoredProcedure);
} }
/// <summary> internal List<AuditFindingCategory> GetAuditFindingCategories() {
/// DynamicParameters parameters = new();
/// </summary> return db.Query<AuditFindingCategory>("_8DGetAuditFindingCategories", commandType: CommandType.StoredProcedure).ToList();
/// <returns></returns>
internal List<AuditFindingCategory> GetAuditFindingCategories()
{
var parameters = new DynamicParameters();
return this.db.Query<AuditFindingCategory>("_8DGetAuditFindingCategories", commandType: CommandType.StoredProcedure).ToList();
} }
/// <summary> public void ReleaseLockOnDocument(int userID, int issueID) {
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="userID"></param>
/// <param name="issueID"></param>
public void ReleaseLockOnDocument(int userID, int issueID)
{
var parameters = new DynamicParameters();
parameters.Add("@AuditNo", issueID); parameters.Add("@AuditNo", issueID);
parameters.Add("@UserID", userID); parameters.Add("@UserID", userID);
this.db.Execute("_8DReleaseLockOnAuditDocuments", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DReleaseLockOnAuditDocuments", parameters, commandType: CommandType.StoredProcedure);
} }
/// <summary> public IEnumerable<CANoList> GetCorrectiveActionNoList() {
/// DynamicParameters parameters = new();
/// </summary> List<CANoList> dataList = db.Query<CANoList>("_8DGetCorrectiveActionNoList", parameters, commandType: CommandType.StoredProcedure).ToList();
/// <returns></returns>
public IEnumerable<CANoList> GetCorrectiveActionNoList()
{
var parameters = new DynamicParameters();
var dataList = this.db.Query<CANoList>("_8DGetCorrectiveActionNoList", parameters, commandType: CommandType.StoredProcedure).ToList();
return dataList; return dataList;
} }
/// <summary> public List<int> Get8DQA() {
/// List<int> users = new();
/// </summary> DynamicParameters parameters = new();
/// <param name="subRoleCategoryID"></param> users = db.Query<int>("_8DGet8DQA", parameters, commandType: CommandType.StoredProcedure).ToList();
/// <returns></returns>
public List<int> Get8DQA()
{
List<int> users = new List<int>();
var parameters = new DynamicParameters();
users = this.db.Query<int>("_8DGet8DQA", parameters, commandType: CommandType.StoredProcedure).ToList();
return users; return users;
} }
public int GetOpenCACountByAuditNo(int auditNo) {
/// <summary> int rowCount = 0;
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="auditNo"></param>
/// <returns></returns>
public int GetOpenCACountByAuditNo(int auditNo)
{
int rowCount = 0 ;
var parameters = new DynamicParameters();
parameters.Add("@AuditNo", auditNo); parameters.Add("@AuditNo", auditNo);
rowCount = this.db.Query<int>("_8DGetOpenCACountByAuditNo", parameters, commandType: CommandType.StoredProcedure).Single(); rowCount = db.Query<int>("_8DGetOpenCACountByAuditNo", parameters, commandType: CommandType.StoredProcedure).Single();
return rowCount; return rowCount;
} }
// CA Findings ==================================================================================================================================== // CA Findings ====================================================================================================================================
public void InsertCAFindings(CAFindings model) {
/// <summary> DynamicParameters parameters = new();
///
/// </summary>
/// <param name="model"></param>
public void InsertCAFindings(CAFindings model)
{
var parameters = new DynamicParameters();
parameters.Add("@AuditNo", model.AuditNo); parameters.Add("@AuditNo", model.AuditNo);
parameters.Add("@CAFinding", model.CAFinding); parameters.Add("@CAFinding", model.CAFinding);
parameters.Add("@CorrectiveAction", model.CorrectiveAction); parameters.Add("@CorrectiveAction", model.CorrectiveAction);
@ -569,18 +340,11 @@ namespace Fab2ApprovalSystem.DMO
parameters.Add("@ECD", model.ECD); parameters.Add("@ECD", model.ECD);
parameters.Add("@ImplementedDate", model.ImplementedDate); parameters.Add("@ImplementedDate", model.ImplementedDate);
this.db.Execute("_8DInsertCAFindings", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DInsertCAFindings", parameters, commandType: CommandType.StoredProcedure);
} }
/// <summary> public void UpdateCAFindings(CAFindings model) {
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="model"></param>
public void UpdateCAFindings(CAFindings model)
{
var parameters = new DynamicParameters();
parameters.Add("@CAFindingsID", model.ID); parameters.Add("@CAFindingsID", model.ID);
parameters.Add("@CAFinding", model.CAFinding); parameters.Add("@CAFinding", model.CAFinding);
parameters.Add("@CorrectiveAction", model.CorrectiveAction); parameters.Add("@CorrectiveAction", model.CorrectiveAction);
@ -589,70 +353,155 @@ namespace Fab2ApprovalSystem.DMO
parameters.Add("@ECD", model.ECD); parameters.Add("@ECD", model.ECD);
parameters.Add("@ImplementedDate", model.ImplementedDate); parameters.Add("@ImplementedDate", model.ImplementedDate);
this.db.Execute("_8DUpdateCAFindings", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DUpdateCAFindings", parameters, commandType: CommandType.StoredProcedure);
} }
/// <summary> public void DeleteCAFindingsItem(int caFindingsID) {
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="caFindingsID"></param>
public void DeleteCAFindingsItem(int caFindingsID)
{
var parameters = new DynamicParameters();
parameters.Add("@CAFindingsID", caFindingsID); parameters.Add("@CAFindingsID", caFindingsID);
this.db.Execute("_8DDeleteCAFindingsItem", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DDeleteCAFindingsItem", parameters, commandType: CommandType.StoredProcedure);
} }
/// <summary> public CAFindings GetCAFindingsItem(int caFindingsID) {
/// CAFindings model = new();
/// </summary> DynamicParameters parameters = new();
/// <param name="caFindingsID"></param>
/// <returns></returns>
public CAFindings GetCAFindingsItem(int caFindingsID)
{
var model = new CAFindings();
var parameters = new DynamicParameters();
parameters.Add("@CAFindingsID", caFindingsID); parameters.Add("@CAFindingsID", caFindingsID);
var data = this.db.Query<CAFindings>("_8DGetCAFindings", parameters, commandType: CommandType.StoredProcedure).Single(); var data = db.Query<CAFindings>("_8DGetCAFindings", parameters, commandType: CommandType.StoredProcedure).Single();
return data; return data;
} }
/// <summary> public IEnumerable<CAFindings> GetCAFindingsList(int auditNo) {
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="caNo"></param>
/// <returns></returns>
public IEnumerable<CAFindings> GetCAFindingsList(int auditNo)
{
var parameters = new DynamicParameters();
parameters.Add("@AuditNo", auditNo); parameters.Add("@AuditNo", auditNo);
var dataList = this.db.Query<CAFindings>("_8DGetCAFindingsList", parameters, commandType: CommandType.StoredProcedure).ToList(); List<CAFindings> dataList = db.Query<CAFindings>("_8DGetCAFindingsList", parameters, commandType: CommandType.StoredProcedure).ToList();
return dataList; return dataList;
} }
/// <summary> public int IsCAAssignedToAudit(int CANo, int auditNo) {
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="CANo"></param>
/// <returns></returns>
public int IsCAAssignedToAudit(int CANo, int auditNo)
{
var parameters = new DynamicParameters();
int returnValue = 1; int returnValue = 1;
parameters.Add("@CANo", CANo); parameters.Add("@CANo", CANo);
parameters.Add("@AuditNo", auditNo); parameters.Add("@AuditNo", auditNo);
parameters.Add("@IsCAAssignedToAudit", returnValue, direction: ParameterDirection.Output); parameters.Add("@IsCAAssignedToAudit", returnValue, direction: ParameterDirection.Output);
this.db.Execute("_8DIsCAAssignedtoAudit", parameters, commandType: CommandType.StoredProcedure); db.Execute("_8DIsCAAssignedtoAudit", parameters, commandType: CommandType.StoredProcedure);
returnValue = parameters.Get<int>("IsCAAssignedToAudit"); returnValue = parameters.Get<int>("IsCAAssignedToAudit");
return returnValue; return returnValue;
} }
public AuditEdit GetAuditEdit(int issueID, Audit audit, bool isAdmin, int userId) {
AuditEdit result = new();
List<int> userList = Get8DQA();
result.MesaUsers = UserUtilities.GetMesaUsers();
int QAs = userList.Find(delegate (int al) { return al == userId; });
result.Is8DQA = "false";
if (QAs != 0) {
result.Is8DQA = "true";
} }
audit = GetAuditItem(issueID, userId);
// transform audit users from string to list, delimited by a comma.
if (audit.Auditees == null) {
result.AuditeeNames = new List<string>();
} else {
string[] auditeeNames = audit.Auditees.Split(',');
result.AuditeeNames = auditeeNames.ToList();
}
result.IsSubmitter = false;
if (audit.OriginatorID == userId) {
result.IsSubmitter = true;
}
if (isAdmin != true) {
result.IsAdmin = false;
} else {
result.IsAdmin = true;
}
if ((audit.RecordLockIndicator && audit.RecordLockedBy != userId)
|| audit.AuditStatus != 0) // open
{
result.RedirectToAction = true;
}
if (result.IsAdmin == false && result.IsSubmitter == false) {
result.RedirectToAction = true;
} else {
result.UserList = GetUserList();
result.AuditTypeList = GetAuditTypeList();
// result.AuditStandardList = GetAuditStandardList();
result.AuditorList = GetAuditorList();
result.AuditAreaList = GetAuditAreaList();
result.AuditFindingCategoryList = GetAuditFindingCategories();
result.CANoList = GetCorrectiveActionNoList();
}
return result;
}
public Audit InsertAndGetAudit(CorrectiveActionDMO caDMO, AuditFindings data, int userID) {
Audit audit = new();
InsertAuditFindingsItem(data);
audit = GetAuditItem(data.AuditNo, userID);
// Transfer Finding Details to CA
if (data.CANo != 0) {
CorrectiveAction ca = caDMO.GetCAItem(data.CANo, userID);
ca.CATitle = data.Title;
ca.CASourceID = 1; // Audit
caDMO.UpdateCorrectiveAction(ca);
}
return audit;
}
public Audit UpdateAndGetAudit(CorrectiveActionDMO caDMO, AuditFindings data, int userID) {
Audit audit = new();
UpdateAuditFindingsItem(data);
audit = GetAuditItem(data.AuditNo, userID);
// Transfer Finding Details to CA
if (data.CANo != 0) {
CorrectiveAction ca = caDMO.GetCAItem(data.CANo, userID);
ca.CATitle = data.Title;
ca.CASourceID = 1; // Audit
caDMO.UpdateCorrectiveAction(ca);
}
return audit;
}
public Audit DeleteAndGetAudit(int auditFindingsID, int userID) {
var af = GetAuditFindingsByID(auditFindingsID);
DeleteAuditFindingsItem(auditFindingsID);
var audit = GetAuditItem(af.AuditNo, userID);
return audit;
}
public string NotifyActionItemOwner(int issueID, DateTime? dueDate, int? responsibleOwnerID, string emailTemplatesPath) {
string emailSentList = "";
string email = MiscDMO.GetEmail(responsibleOwnerID);
string emailTemplate = "CorrectiveActionFindingAssigned.txt";
string userEmail = string.Empty;
string subject = "5s/CA Findings";
string senderName = "CorrectiveAction";
EmailNotification en = new(_AppSettings, subject, emailTemplatesPath);
string[] emailparams = new string[5];
emailparams[0] = Functions.ReturnAuditNoStringFormat(issueID);
if (dueDate is null)
emailparams[1] = string.Empty;
else
emailparams[1] = dueDate.Value.ToString();
emailparams[2] = Functions.DocumentTypeMapper(GlobalVars.DocumentType.Audit);
emailparams[3] = GlobalVars.hostURL;
emailparams[4] = issueID.ToString();
userEmail = email;
en.SendNotificationEmail(emailTemplate, GlobalVars.SENDER_EMAIL, senderName, userEmail, null, subject, emailparams);
emailSentList += email + ",";
return email;
}
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,30 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data; using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
using Fab2ApprovalSystem.Models;
using Dapper; using Dapper;
using System.Configuration;
namespace Fab2ApprovalSystem.DMO using Fab2ApprovalSystem.Misc;
{ using Fab2ApprovalSystem.Models;
/// <summary>
///
/// </summary>
public static class ECNTypeChangeLogDMO
{
private static IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
/// <summary> namespace Fab2ApprovalSystem.DMO;
///
/// </summary>
/// <param name="changeLog"></param>
public static void Add(ECNTypeChangeLog changeLog)
{
var parameters = new DynamicParameters(); public static class ECNTypeChangeLogDMO {
private static readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
public static void Add(ECNTypeChangeLog changeLog) {
DynamicParameters parameters = new();
parameters.Add("@ECNNumber", changeLog.ECNNumber); parameters.Add("@ECNNumber", changeLog.ECNNumber);
parameters.Add("@UserID", changeLog.UserID); parameters.Add("@UserID", changeLog.UserID);
parameters.Add("@ECNTypeFrom", changeLog.ECNTypeFrom); parameters.Add("@ECNTypeFrom", changeLog.ECNTypeFrom);
@ -33,8 +21,4 @@ namespace Fab2ApprovalSystem.DMO
db.Execute("ECNInsertECNTypeChangeLog", parameters, commandType: CommandType.StoredProcedure); db.Execute("ECNInsertECNTypeChangeLog", parameters, commandType: CommandType.StoredProcedure);
} }
}
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,41 +1,18 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data; using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using Fab2ApprovalSystem.Models;
using Dapper; using Dapper;
using System.Transactions;
using Fab2ApprovalSystem.ViewModels;
using System.Reflection;
using Fab2ApprovalSystem.Misc; using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
namespace Fab2ApprovalSystem.DMO namespace Fab2ApprovalSystem.DMO;
{
public static class EventLogDMO public static class EventLogDMO {
{ private static readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
private static IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
//public static void Add(WinEventLog eventLog) public static void Add(WinEventLog eventLog) {
//{ DynamicParameters parameters = new();
// var parameters = new DynamicParameters();
// parameters.Add("@IssueID", eventLog.IssueID);
// parameters.Add("@UserID", eventLog.UserID);
// parameters.Add("@OperationType", eventLog.OperationType);
// parameters.Add("@Comments", eventLog.Comments);
// db.Execute("InsertEventLog", parameters, commandType: CommandType.StoredProcedure);
//}
public static void Add(WinEventLog eventLog)
{
var parameters = new DynamicParameters();
parameters.Add("@IssueID", eventLog.IssueID); parameters.Add("@IssueID", eventLog.IssueID);
parameters.Add("@UserID", eventLog.UserID); parameters.Add("@UserID", eventLog.UserID);
parameters.Add("@DocumentType", eventLog.DocumentType); parameters.Add("@DocumentType", eventLog.DocumentType);
@ -43,9 +20,6 @@ namespace Fab2ApprovalSystem.DMO
parameters.Add("@Comments", eventLog.Comments); parameters.Add("@Comments", eventLog.Comments);
db.Execute("InsertEventLogByDocument", parameters, commandType: CommandType.StoredProcedure); db.Execute("InsertEventLogByDocument", parameters, commandType: CommandType.StoredProcedure);
} }
}
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,62 +1,48 @@
using Fab2ApprovalSystem.Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Web;
using Dapper;
using System.Data; using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
using System.Configuration; using System.Linq;
using System.Text; using System.Text;
using Dapper;
using Fab2ApprovalSystem.Misc; using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.ViewModels; using Fab2ApprovalSystem.ViewModels;
namespace Fab2ApprovalSystem.DMO namespace Fab2ApprovalSystem.DMO;
{
public class MiscDMO
{
/// <summary> public class MiscDMO {
///
/// </summary> public static IEnumerable<Lot> SearchLots(string searchText, string searchBy) {
/// <param name="searchText"></param> IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// <returns></returns>
public static IEnumerable<Lot> SearchLots(string searchText, string searchBy)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
IEnumerable<Lot> lotList; IEnumerable<Lot> lotList;
string sql = ""; string sql = "";
if (GlobalVars.DBConnection.ToUpper() == "TEST" || GlobalVars.DBConnection.ToUpper() == "QUALITY") if (GlobalVars.DBConnection.ToUpper() == "TEST" || GlobalVars.DBConnection.ToUpper() == "QUALITY") {
{
if (searchBy == GlobalVars.LOT_NO) if (searchBy == GlobalVars.LOT_NO)
//sql = "SELECT WP_LOT_NO + '/' + ISNULL(WP_LOT_NO,'') AS LotNumber FROM WP_RECORD_MJ WHERE WP_LOT_NO LIKE '%" + searchText + "%' ";
sql = "SELECT WP_LOT_NO + '/' + ISNULL(WP_LOT_NO,'') AS LotNumber FROM SPNLot WHERE WP_LOT_NO LIKE '%" + searchText + "%' "; sql = "SELECT WP_LOT_NO + '/' + ISNULL(WP_LOT_NO,'') AS LotNumber FROM SPNLot WHERE WP_LOT_NO LIKE '%" + searchText + "%' ";
else if (searchBy == GlobalVars.LOCATION) else if (searchBy == GlobalVars.LOCATION) {
{
sql = "SELECT WP_LOT_NO + '/' + ISNULL(WP_LOT_NO,'') AS LotNumber FROM SPNLot WHERE WP_CURRENT_LOCATION = '" + searchText.Trim() + "' AND WP_LOT_NO + '/' + ISNULL(WP_LOT_NO,'') IS NOT NULL"; sql = "SELECT WP_LOT_NO + '/' + ISNULL(WP_LOT_NO,'') AS LotNumber FROM SPNLot WHERE WP_CURRENT_LOCATION = '" + searchText.Trim() + "' AND WP_LOT_NO + '/' + ISNULL(WP_LOT_NO,'') IS NOT NULL";
} }
lotList = db.Query<Lot>(sql).ToList(); lotList = db.Query<Lot>(sql).ToList();
db.Close(); db.Close();
} } else {
else
{
if (searchBy == GlobalVars.LOT_NO) if (searchBy == GlobalVars.LOT_NO)
sql = "SELECT WP_LOT_NO + '/' + ISNULL(DieLotNumber,'') AS LotNumber FROM SPNLot WHERE WP_LOT_NO LIKE '%" + searchText + "%' OR DieLotNumber LIKE '%" + searchText + "%' "; sql = "SELECT WP_LOT_NO + '/' + ISNULL(DieLotNumber,'') AS LotNumber FROM SPNLot WHERE WP_LOT_NO LIKE '%" + searchText + "%' OR DieLotNumber LIKE '%" + searchText + "%' ";
else if (searchBy == GlobalVars.LOCATION) else if (searchBy == GlobalVars.LOCATION) {
{
sql = "SELECT WP_LOT_NO + '/' + ISNULL(DieLotNumber,'') AS LotNumber FROM SPNLot WHERE WP_CURRENT_LOCATION = '" + searchText.Trim() + "' AND WP_LOT_NO + '/' + ISNULL(DieLotNumber,'') IS NOT NULL"; sql = "SELECT WP_LOT_NO + '/' + ISNULL(DieLotNumber,'') AS LotNumber FROM SPNLot WHERE WP_CURRENT_LOCATION = '" + searchText.Trim() + "' AND WP_LOT_NO + '/' + ISNULL(DieLotNumber,'') IS NOT NULL";
} }
lotList = db.Query<Lot>(sql).ToList(); lotList = db.Query<Lot>(sql).ToList();
db.Close(); db.Close();
} }
return lotList; return lotList;
} }
public static IEnumerable<int> GetUserIDsBySubRoleID(int subRoleID)
{ public static IEnumerable<int> GetUserIDsBySubRoleID(int subRoleID) {
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString); IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
IEnumerable<int> userList; IEnumerable<int> userList;
string sql = ""; string sql = "";
@ -66,80 +52,47 @@ namespace Fab2ApprovalSystem.DMO
return userList; return userList;
} }
/// <summary> public static IEnumerable<Lot> SearchLTLots(string searchText, string searchBy) {
/// IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// </summary>
/// <param name="searchText"></param>
/// <param name="searchBy"></param>
/// <returns></returns>
public static IEnumerable<Lot> SearchLTLots(string searchText, string searchBy)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
string sql = ""; string sql = "";
if (searchBy == GlobalVars.LOT_NO) if (searchBy == GlobalVars.LOT_NO)
sql = "SELECT DISTINCT WP_LOT_NO AS LotNumber FROM vFAB2SPN_WP_RECORD WP WHERE WP_LOT_NO LIKE '%" + searchText.Trim() + "%' "; sql = "SELECT DISTINCT WP_LOT_NO AS LotNumber FROM vFAB2SPN_WP_RECORD WP WHERE WP_LOT_NO LIKE '%" + searchText.Trim() + "%' ";
else if (searchBy == GlobalVars.LOCATION) else if (searchBy == GlobalVars.LOCATION) {
{
sql = "SELECT DISTINCT WP_LOT_NO AS LotNumber FROM vFAB2SPN_WP_RECORD WP WHERE WP_CURRENT_LOCATION = '" + searchText.Trim() + "'"; sql = "SELECT DISTINCT WP_LOT_NO AS LotNumber FROM vFAB2SPN_WP_RECORD WP WHERE WP_CURRENT_LOCATION = '" + searchText.Trim() + "'";
} }
var lotList = db.Query<Lot>(sql).ToList(); List<Lot> lotList = db.Query<Lot>(sql).ToList();
db.Close(); db.Close();
return lotList; return lotList;
} }
/// <summary> public static IEnumerable<WIPPart> SearchLTParts(string searchText) {
/// IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// </summary> StringBuilder sql = new();
/// <param name="searchText"></param>
/// <returns></returns>
public static IEnumerable<WIPPart> SearchLTParts(string searchText)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
StringBuilder sql = new StringBuilder();
sql.Append("SELECT PartNumber + '~' + SiliconPart + '~' + ProcessFlow + '~' + PartDescription AS WIPPartData "); sql.Append("SELECT PartNumber + '~' + SiliconPart + '~' + ProcessFlow + '~' + PartDescription AS WIPPartData ");
sql.Append("FROM vWIPPartData WHERE PartNumber LIKE '%" + searchText + "%' ORDER BY PartNumber"); sql.Append("FROM vWIPPartData WHERE PartNumber LIKE '%" + searchText + "%' ORDER BY PartNumber");
//StringBuilder sql = new StringBuilder(); List<WIPPart> parList = db.Query<WIPPart>(sql.ToString()).ToList();
//sql.Append("SELECT TO_PART AS PartNumber, FROM_PART AS SiliconPart, P.MP_DESCRIPTION AS PartDescirption, ");
//sql.Append("RTRIM(LTRIM(SUBSTRING(TO_PART_PROC, PATINDEX('% %', TO_PART_PROC), LEN(TO_PART_PROC)))) AS ProcessFlow ");
//sql.Append("FROM TEMIRWAP019.FAB2SPN.dbo.PG_RECORD W ");
//sql.Append("INNER JOIN TEMIRWAP019.Fab2SPN.dbo.MP_RECORD P ON W.TO_PART = P.MP_PART_NUMBER ");
//sql.Append("WHERE PartNumber LIKE '%" + searchText + "%' ORDER BY PartNumber ");
var parList = db.Query<WIPPart>(sql.ToString()).ToList();
db.Close(); db.Close();
return parList; return parList;
} }
/// <summary> public static void GetLotInformation(Lot lot) {
/// IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// </summary> StringBuilder qryLotInfo = new();
/// <param name="lot"></param>
public static void GetLotInformation(Lot lot)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
//IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnectionProd"].ConnectionString);
StringBuilder qryLotInfo = new StringBuilder();
qryLotInfo.Append("SELECT WP_STATUS , WP_LOT_NO, WP_PART_NUMBER, MP_PRODUCT_FAMILY, MP_DESCRIPTION, "); qryLotInfo.Append("SELECT WP_STATUS , WP_LOT_NO, WP_PART_NUMBER, MP_PRODUCT_FAMILY, MP_DESCRIPTION, ");
qryLotInfo.Append("WP_CURRENT_QTY, WP_CURRENT_LOCATION, DieLotNumber, DiePartNo, DieCount, MP_QUALITY_CODE FROM SPNLot "); qryLotInfo.Append("WP_CURRENT_QTY, WP_CURRENT_LOCATION, DieLotNumber, DiePartNo, DieCount, MP_QUALITY_CODE FROM SPNLot ");
qryLotInfo.Append("WHERE WP_Lot_No = @LotNumber "); qryLotInfo.Append("WHERE WP_Lot_No = @LotNumber ");
//var tempLotNumber = lot.LotNumber.Substring(0, 9);
var tempLotNumber = ""; var tempLotNumber = "";
if (lot.LotNumber.IndexOf('/') >= 0) if (lot.LotNumber.IndexOf('/') >= 0) {
{
tempLotNumber = lot.LotNumber.Substring(0, lot.LotNumber.IndexOf('/')); tempLotNumber = lot.LotNumber.Substring(0, lot.LotNumber.IndexOf('/'));
} } else
else
tempLotNumber = lot.LotNumber; tempLotNumber = lot.LotNumber;
lot.LotNumber = tempLotNumber; lot.LotNumber = tempLotNumber;
var lotInfoRow = db.Query<dynamic>(qryLotInfo.ToString(), new { LotNumber = tempLotNumber }).ToList(); List<dynamic> lotInfoRow = db.Query<dynamic>(qryLotInfo.ToString(), new { LotNumber = tempLotNumber }).ToList();
foreach (dynamic lotInfoColumn in lotInfoRow) foreach (dynamic lotInfoColumn in lotInfoRow) {
{
lot.LotNumber = lotInfoColumn.WP_LOT_NO; lot.LotNumber = lotInfoColumn.WP_LOT_NO;
if (lot.DieLotNumber == null || lot.DieLotNumber == "") if (lot.DieLotNumber == null || lot.DieLotNumber == "")
lot.DieLotNumber = lotInfoColumn.DieLotNumber; lot.DieLotNumber = lotInfoColumn.DieLotNumber;
@ -147,48 +100,36 @@ namespace Fab2ApprovalSystem.DMO
if (lotInfoColumn.WP_PART_NUMBER != null) if (lotInfoColumn.WP_PART_NUMBER != null)
lot.WipPartNo = lotInfoColumn.WP_PART_NUMBER.Trim(); lot.WipPartNo = lotInfoColumn.WP_PART_NUMBER.Trim();
if (lotInfoColumn.WP_CURRENT_LOCATION != null) if (lotInfoColumn.WP_CURRENT_LOCATION != null) {
{
// The data is returned from a view which is a combination from various sources and at times when the // The data is returned from a view which is a combination from various sources and at times when the
// Lot is at the QDB location, which is extracted out of SAP, it also shows up at the 6600 location in SPN. // Lot is at the QDB location, which is extracted out of SAP, it also shows up at the 6600 location in SPN.
// There is a duplication. // There is a duplication.
//if the result returns 2 records , QDB overrides the other location (6600) // if the result returns 2 records , QDB overrides the other location (6600)
if (lot.Location == "QDB" && lotInfoColumn.WP_CURRENT_LOCATION == "6600") if (lot.Location == "QDB" && lotInfoColumn.WP_CURRENT_LOCATION == "6600")
lot.Location = "QDB"; lot.Location = "QDB";
else else
lot.Location = lotInfoColumn.WP_CURRENT_LOCATION; lot.Location = lotInfoColumn.WP_CURRENT_LOCATION;
} }
if (lotInfoColumn.MP_DESCRIPTION != null) {
if (lotInfoColumn.MP_DESCRIPTION != null)
{
lot.Description = lotInfoColumn.MP_DESCRIPTION; lot.Description = lotInfoColumn.MP_DESCRIPTION;
if (lot.Description.Length > 0) if (lot.Description.Length > 0) {
{
string[] temp = lot.Description.Split(new char[] { ',' }); string[] temp = lot.Description.Split(new char[] { ',' });
if (temp.Length > 0) if (temp.Length > 0) {
{ try {
try
{
lot.ProductFamily = temp[0]; lot.ProductFamily = temp[0];
} } catch { } // ignore the error
catch { } // ignore the error
try try {
{
//lot.Gen = double.Parse(temp[2].Substring(1, temp[2].Length - 1));
if (lot.Description.StartsWith("MA,")) if (lot.Description.StartsWith("MA,"))
lot.Gen = temp[2]; lot.Gen = temp[2];
else else
lot.Gen = temp[2].Substring(1, temp[2].Length - 1); lot.Gen = temp[2].Substring(1, temp[2].Length - 1);
} } catch { }// ignore the error
catch { }// ignore the error try {
try // lot.Hexsize = double.Parse(temp[6]);
{
//lot.Hexsize = double.Parse(temp[6]);
lot.Hexsize = temp[6]; lot.Hexsize = temp[6];
} } catch { }// ignore the error
catch { }// ignore the error
} }
} }
@ -197,30 +138,24 @@ namespace Fab2ApprovalSystem.DMO
if (lotInfoColumn.WP_STATUS != null) if (lotInfoColumn.WP_STATUS != null)
lot.Status = lotInfoColumn.WP_STATUS; lot.Status = lotInfoColumn.WP_STATUS;
if (lotInfoColumn.DiePartNo != null) if (lotInfoColumn.DiePartNo != null)
lot.DiePartNo = lotInfoColumn.DiePartNo.Trim(); lot.DiePartNo = lotInfoColumn.DiePartNo.Trim();
if (lotInfoColumn.WP_CURRENT_QTY != null) if (lotInfoColumn.WP_CURRENT_QTY != null)
lot.WaferCount = lotInfoColumn.WP_CURRENT_QTY; lot.WaferCount = lotInfoColumn.WP_CURRENT_QTY;
if (lot.WipPartNo.Length > 0 || lot.DiePartNo.Length > 0) if (lot.WipPartNo.Length > 0 || lot.DiePartNo.Length > 0) {
{
qryLotInfo.Clear(); qryLotInfo.Clear();
qryLotInfo.Append("SELECT DiePartNo, SourceFAB, Diameter, Silicon, Gen, Layers,HexSize,Voltage,Channel, Type AS ProductFamily, "); qryLotInfo.Append("SELECT DiePartNo, SourceFAB, Diameter, Silicon, Gen, Layers,HexSize,Voltage,Channel, Type AS ProductFamily, ");
qryLotInfo.Append("WaferCost, DieCost FROM StdCost WHERE WIPWaferNo = @WIPPartNo OR DiePartNo = @DiePartNo "); qryLotInfo.Append("WaferCost, DieCost FROM StdCost WHERE WIPWaferNo = @WIPPartNo OR DiePartNo = @DiePartNo ");
var moreLotInfoRow = db.Query<dynamic>(qryLotInfo.ToString(), new { WIPPartNo = lot.WipPartNo, DiePartNo = lot.DiePartNo }).ToList(); List<dynamic> moreLotInfoRow = db.Query<dynamic>(qryLotInfo.ToString(), new { WIPPartNo = lot.WipPartNo, DiePartNo = lot.DiePartNo }).ToList();
foreach (var moreLotInfoColumn in moreLotInfoRow) foreach (var moreLotInfoColumn in moreLotInfoRow) {
{
if (lotInfoColumn.DieCount != null && lotInfoColumn.DieCount != 0) if (lotInfoColumn.DieCount != null && lotInfoColumn.DieCount != 0)
lot.DieCount = int.Parse(lotInfoColumn.DieCount.ToString()); lot.DieCount = int.Parse(lotInfoColumn.DieCount.ToString());
lot.DieCost = double.Parse(moreLotInfoColumn.DieCost.ToString()); lot.DieCost = double.Parse(moreLotInfoColumn.DieCost.ToString());
lot.WaferCost = double.Parse(moreLotInfoColumn.WaferCost.ToString()); lot.WaferCost = double.Parse(moreLotInfoColumn.WaferCost.ToString());
if (moreLotInfoColumn.Channel != null) if (moreLotInfoColumn.Channel != null)
lot.Channel = moreLotInfoColumn.Channel; lot.Channel = moreLotInfoColumn.Channel;
@ -230,7 +165,6 @@ namespace Fab2ApprovalSystem.DMO
if (moreLotInfoColumn.Voltage != null) if (moreLotInfoColumn.Voltage != null)
lot.Voltage = moreLotInfoColumn.Voltage; lot.Voltage = moreLotInfoColumn.Voltage;
if (lot.DieCount > 0) if (lot.DieCount > 0)
lot.TotalCost = Math.Round(lot.DieCount * lot.DieCost, 2); lot.TotalCost = Math.Round(lot.DieCount * lot.DieCost, 2);
else if (lot.WaferCount > 0) else if (lot.WaferCount > 0)
@ -240,8 +174,6 @@ namespace Fab2ApprovalSystem.DMO
} }
// added this code if the data shows up at the 6600 location and also at QDB for a lot. // added this code if the data shows up at the 6600 location and also at QDB for a lot.
//if (lot.DieCost > 0)
// lot.Location = "QDB";
if (lotInfoColumn.MP_QUALITY_CODE != null) if (lotInfoColumn.MP_QUALITY_CODE != null)
lot.QualityCode = lotInfoColumn.MP_QUALITY_CODE.Trim(); lot.QualityCode = lotInfoColumn.MP_QUALITY_CODE.Trim();
@ -249,20 +181,12 @@ namespace Fab2ApprovalSystem.DMO
} }
db.Close(); db.Close();
//return lotStatusOption;
} }
/// <summary> public static IEnumerable<UserProfile> GetUserList() {
/// / IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// </summary>
/// <returns></returns>
public static IEnumerable<UserProfile> GetUserList()
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString); StringBuilder sql = new();
StringBuilder sql = new StringBuilder();
sql.Append("SELECT FirstName + ' ' + LastName AS FullName, U.UserID AS UserId "); sql.Append("SELECT FirstName + ' ' + LastName AS FullName, U.UserID AS UserId ");
sql.Append("FROM Users U "); sql.Append("FROM Users U ");
sql.Append("ORDER BY FirstName"); sql.Append("ORDER BY FirstName");
@ -270,56 +194,32 @@ namespace Fab2ApprovalSystem.DMO
return db.Query<UserProfile>(sql.ToString()).ToList(); return db.Query<UserProfile>(sql.ToString()).ToList();
} }
/// <summary> public static List<string> GetApproverEmailListByDocument(int issueID, byte step, int documentType) {
/// IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// </summary>
/// <param name="issueID"></param>
/// <param name="step"></param>
/// <param name="documentType"></param>
/// <returns></returns>
public static List<string> GetApproverEmailListByDocument(int issueID, byte step, int documentType)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
parameters.Add("@DocumentTypeID", documentType); parameters.Add("@DocumentTypeID", documentType);
parameters.Add("@IssueID", issueID); parameters.Add("@IssueID", issueID);
parameters.Add("@Step", step); parameters.Add("@Step", step);
var emailList = db.Query<string>("GetApproverEmailListByDocument", parameters, commandType: CommandType.StoredProcedure).ToList(); List<string> emailList = db.Query<string>("GetApproverEmailListByDocument", parameters, commandType: CommandType.StoredProcedure).ToList();
return emailList; return emailList;
} }
public static List<ApproversListViewModel> GetApproversListByDocument(int issueID, byte step, int documentType) {
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
DynamicParameters parameters = new();
/// <summary>
///
/// </summary>
/// <param name="issueID"></param>
/// <param name="step"></param>
/// <param name="documentType"></param>
/// <returns></returns>
public static List<ApproversListViewModel> GetApproversListByDocument(int issueID, byte step, int documentType)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters();
parameters.Add("@DocumentTypeID", documentType); parameters.Add("@DocumentTypeID", documentType);
parameters.Add("@IssueID", issueID); parameters.Add("@IssueID", issueID);
parameters.Add("@Step", step); parameters.Add("@Step", step);
var approverList = db.Query<ApproversListViewModel>("GetApproversListByDocument", parameters, commandType: CommandType.StoredProcedure).ToList(); List<ApproversListViewModel> approverList = db.Query<ApproversListViewModel>("GetApproversListByDocument", parameters, commandType: CommandType.StoredProcedure).ToList();
return approverList; return approverList;
} }
public static IEnumerable<ApprovalModel> GetApprovalsByDocument(int issueID, int documentType) public static IEnumerable<ApprovalModel> GetApprovalsByDocument(int issueID, int documentType) {
{ IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
parameters.Add("@DocumentTypeID", documentType); parameters.Add("@DocumentTypeID", documentType);
parameters.Add("@IssueID", issueID); parameters.Add("@IssueID", issueID);
var approvalList = db.Query<ApprovalModel>( var approvalList = db.Query<ApprovalModel>(
@ -330,149 +230,81 @@ namespace Fab2ApprovalSystem.DMO
/// <summary> /// <summary>
/// NOT IN USE YET /// NOT IN USE YET
/// </summary> /// </summary>
/// <param name="issueID"></param>
/// <param name="currentStep"></param>
/// <param name="documentType"></param>
/// <returns></returns>
public static IEnumerable<LoginModel> GetApprovedApproversListByDocument(int issueID, int currentStep, int documentType)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
return db.Query<LoginModel>("GetApprovedApproversListByDocument", new { @DocumentTypeID = documentType, @IssueID = issueID, @Step = currentStep }, commandType: CommandType.StoredProcedure).ToList();
public static IEnumerable<LoginModel> GetApprovedApproversListByDocument(int issueID, int currentStep, int documentType) {
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
return db.Query<LoginModel>("GetApprovedApproversListByDocument", new { @DocumentTypeID = documentType, @IssueID = issueID, @Step = currentStep }, commandType: CommandType.StoredProcedure).ToList();
} }
public static List<ApproversListViewModel> GetPendingApproversListByDocument(int issueID, byte step, int documentType) {
/// <summary> IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="issueID"></param>
/// <param name="step"></param>
/// <param name="documentType"></param>
/// <returns></returns>
public static List<ApproversListViewModel> GetPendingApproversListByDocument(int issueID, byte step, int documentType)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters();
parameters.Add("@DocumentTypeID", documentType); parameters.Add("@DocumentTypeID", documentType);
parameters.Add("@IssueID", issueID); parameters.Add("@IssueID", issueID);
parameters.Add("@Step", step); parameters.Add("@Step", step);
var approverList = db.Query<ApproversListViewModel>("GetPendingApproversListByDocument", parameters, commandType: CommandType.StoredProcedure).ToList(); List<ApproversListViewModel> approverList = db.Query<ApproversListViewModel>("GetPendingApproversListByDocument", parameters, commandType: CommandType.StoredProcedure).ToList();
return approverList; return approverList;
} }
public static List<string> GetEmergencyTECNApprovalNotifyList(int ecnNumber) {
/// <summary> IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="ecnNumber"></param>
/// <returns></returns>
public static List<string> GetEmergencyTECNApprovalNotifyList(int ecnNumber)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters();
parameters.Add("@ECNNumber", ecnNumber); parameters.Add("@ECNNumber", ecnNumber);
var approverList = db.Query<string>("ECNGetETECNApprovalNotificationList", parameters, commandType: CommandType.StoredProcedure).ToList(); List<string> approverList = db.Query<string>("ECNGetETECNApprovalNotificationList", parameters, commandType: CommandType.StoredProcedure).ToList();
return approverList; return approverList;
} }
/// <summary> public static List<string> GetTECNCancelledApprovalNotifyList(int ecnNumber) {
/// IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// </summary> DynamicParameters parameters = new();
/// <param name="ecnNumber"></param>
/// <returns></returns>
public static List<string> GetTECNCancelledApprovalNotifyList(int ecnNumber)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters();
parameters.Add("@ECNNumber", ecnNumber); parameters.Add("@ECNNumber", ecnNumber);
var approverList = db.Query<string>("ECN_TECNCancelledApprovalNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList(); List<string> approverList = db.Query<string>("ECN_TECNCancelledApprovalNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
return approverList; return approverList;
} }
public static List<string> GetFabGroupNotifyList(int workRequestID) {
/// <summary> IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="workRequestID"></param>
/// <returns></returns>
public static List<string> GetFabGroupNotifyList(int workRequestID)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters();
parameters.Add("@WorkRequestID", workRequestID); parameters.Add("@WorkRequestID", workRequestID);
var notifyList = db.Query<string>("LTFabGroupApprovalNotificationList", parameters, commandType: CommandType.StoredProcedure).ToList(); List<string> notifyList = db.Query<string>("LTFabGroupApprovalNotificationList", parameters, commandType: CommandType.StoredProcedure).ToList();
return notifyList; return notifyList;
} }
public static List<string> GetWorkRequestRevisionNotifyList(int notificationType, int workRequestID, int userID) {
/// <summary> IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="workRequestID"></param>
/// <returns></returns>
public static List<string> GetWorkRequestRevisionNotifyList(int notificationType, int workRequestID, int userID)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters();
parameters.Add("@NotificationType", notificationType); parameters.Add("@NotificationType", notificationType);
parameters.Add("@UserID", userID); parameters.Add("@UserID", userID);
parameters.Add("@WorkRequestID", workRequestID); parameters.Add("@WorkRequestID", workRequestID);
var notifyList = db.Query<string>("LTGetWorkRequestRevisionNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList(); List<string> notifyList = db.Query<string>("LTGetWorkRequestRevisionNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
return notifyList; return notifyList;
} }
public static List<string> GetWorkRequestApprovedNotifyList(int notificationType, int workRequestID, int userID) {
/// <summary> IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="notificationType"></param>
/// <param name="workRequestID"></param>
/// <param name="userID"></param>
/// <returns></returns>
public static List<string> GetWorkRequestApprovedNotifyList(int notificationType, int workRequestID, int userID)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters();
parameters.Add("@NotificationType", notificationType); parameters.Add("@NotificationType", notificationType);
parameters.Add("@UserID", userID); parameters.Add("@UserID", userID);
parameters.Add("@WorkRequestID", workRequestID); parameters.Add("@WorkRequestID", workRequestID);
var notifyList = db.Query<string>("LTGetWorkRequestApprovedNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList(); List<string> notifyList = db.Query<string>("LTGetWorkRequestApprovedNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
return notifyList; return notifyList;
} }
/// <summary> public static List<string> GetLotTravelerCreationAndRevisionNotifyList(int ltLotID, int workRequestID, int userID) {
/// IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// </summary> DynamicParameters parameters = new();
/// <param name="notificationType"></param>
/// <param name="workRequestID"></param>
/// <param name="userID"></param>
/// <returns></returns>
public static List<string> GetLotTravelerCreationAndRevisionNotifyList(int ltLotID, int workRequestID, int userID)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters();
parameters.Add("@LotID", ltLotID); parameters.Add("@LotID", ltLotID);
parameters.Add("@UserID", userID); parameters.Add("@UserID", userID);
parameters.Add("@WorkRequestID", workRequestID); parameters.Add("@WorkRequestID", workRequestID);
var notifyList = db.Query<string>("LTGetLotTravelerCreationAndRevisionNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList(); List<string> notifyList = db.Query<string>("LTGetLotTravelerCreationAndRevisionNotifyList", parameters, commandType: CommandType.StoredProcedure).ToList();
return notifyList; return notifyList;
} }
public static int EnableOOOStatus(int oooUserID, int delegatedTo, DateTime startDate, DateTime endDate) {
/// <summary>
///
/// </summary>
/// <param name="oooUserID"></param>
/// <param name="delegatedTo"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
public static int EnableOOOStatus(int oooUserID, int delegatedTo, DateTime startDate, DateTime endDate)
{
int returnValue = 0; int returnValue = 0;
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString); IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
parameters.Add("@OOOUserID", oooUserID); parameters.Add("@OOOUserID", oooUserID);
parameters.Add("@DelegatedTo", delegatedTo); parameters.Add("@DelegatedTo", delegatedTo);
parameters.Add("@OOOStartDate", startDate); parameters.Add("@OOOStartDate", startDate);
@ -484,69 +316,32 @@ namespace Fab2ApprovalSystem.DMO
returnValue = parameters.Get<int>("@ReturnValue"); returnValue = parameters.Get<int>("@ReturnValue");
return returnValue; return returnValue;
} }
public static void ExpireOOOStatus(int oooUserID) {
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// <summary> DynamicParameters parameters = new();
///
/// </summary>
/// <param name="oooUserID"></param>
/// <param name="delegatedTo"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
public static void ExpireOOOStatus(int oooUserID)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters();
parameters.Add("@OOOUserID", oooUserID); parameters.Add("@OOOUserID", oooUserID);
var approverList = db.Execute("ExpireOOOStatus", parameters, commandType: CommandType.StoredProcedure); var approverList = db.Execute("ExpireOOOStatus", parameters, commandType: CommandType.StoredProcedure);
} }
/// <summary> public static List<Department> GetDepartments() {
/// IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// </summary> List<Department> departments = db.Query<Department>("GetDepartments", null, commandType: CommandType.StoredProcedure).ToList();
/// <returns></returns>
public static List<Department> GetDepartments()
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var departments = db.Query<Department>("GetDepartments", null, commandType: CommandType.StoredProcedure).ToList();
return departments; return departments;
} }
/// <summary> public static List<AffectedModule> GetModules() {
/// IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// </summary>
/// <returns></returns>
public static List<AffectedModule> GetModules()
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var modules = db.Query<AffectedModule>("GetModules", null, commandType: CommandType.StoredProcedure).ToList(); List<AffectedModule> modules = db.Query<AffectedModule>("GetModules", null, commandType: CommandType.StoredProcedure).ToList();
return modules; return modules;
} }
/// <summary> public static void GetLTLotInformation(LTLot lot) {
/// IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// </summary> StringBuilder qryLotInfo = new();
/// <param name="lot"></param>
public static void GetLTLotInformation(LTLot lot)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
StringBuilder qryLotInfo = new StringBuilder();
//qryLotInfo.Append("SELECT DISTINCT ");
//qryLotInfo.Append("WP_LOT_NO, WP_CURRENT_QTY, WP.WP_PART_NUMBER, MP_DESCRIPTION, WP_PROCESS, WO_LOCATION, WO_OPER_NO, WP_STATUS ");
//qryLotInfo.Append("FROM TEMIRWAP019.FAB2SPN.dbo.WO_RECORD WO ");
//qryLotInfo.Append("INNER JOIN TEMIRWAP019.FAB2SPN.dbo.WP_RECORD WP ");
//qryLotInfo.Append("ON WO.WO_LOT_NO = WP.WP_LOT_NO AND WO.InTime = (SELECT MAX(InTime) FROM TEMIRWAP019.FAB2SPN.dbo.WO_RECORD WHERE WO_LOT_NO = @LotNumber) ");
//qryLotInfo.Append("LEFT JOIN TEMIRWAP019.FAB2SPN.dbo.MP_RECORD MP ");
//qryLotInfo.Append("ON WP.WP_PART_NUMBER = MP.MP_PART_NUMBER ");
//qryLotInfo.Append("WHERE WO_LOT_NO = @LotNumber ");
qryLotInfo.Append("SELECT DISTINCT "); qryLotInfo.Append("SELECT DISTINCT ");
qryLotInfo.Append("WP_LOT_NO, WP_CURRENT_QTY, WP.WP_PART_NUMBER, MP_DESCRIPTION, WP_PROCESS, WP_CURRENT_LOCATION, WP_OPER_NO, WP_STATUS "); qryLotInfo.Append("WP_LOT_NO, WP_CURRENT_QTY, WP.WP_PART_NUMBER, MP_DESCRIPTION, WP_PROCESS, WP_CURRENT_LOCATION, WP_OPER_NO, WP_STATUS ");
@ -555,22 +350,17 @@ namespace Fab2ApprovalSystem.DMO
qryLotInfo.Append("ON WP.WP_PART_NUMBER = MP.MP_PART_NUMBER "); qryLotInfo.Append("ON WP.WP_PART_NUMBER = MP.MP_PART_NUMBER ");
qryLotInfo.Append("WHERE WP_LOT_NO = @LotNumber "); qryLotInfo.Append("WHERE WP_LOT_NO = @LotNumber ");
//var tempLotNumber = lot.LotNumber.Substring(0, 9);
var tempLotNumber = ""; var tempLotNumber = "";
if (lot.LotNumber.IndexOf('/') >= 0) if (lot.LotNumber.IndexOf('/') >= 0) {
{
tempLotNumber = lot.LotNumber.Substring(0, lot.LotNumber.IndexOf('/')); tempLotNumber = lot.LotNumber.Substring(0, lot.LotNumber.IndexOf('/'));
} } else
else
tempLotNumber = lot.LotNumber; tempLotNumber = lot.LotNumber;
lot.LotNumber = tempLotNumber; lot.LotNumber = tempLotNumber;
lot.LotNumber = tempLotNumber; lot.LotNumber = tempLotNumber;
var lotInfoRow = db.Query<dynamic>(qryLotInfo.ToString(), new { LotNumber = tempLotNumber }).ToList(); List<dynamic> lotInfoRow = db.Query<dynamic>(qryLotInfo.ToString(), new { LotNumber = tempLotNumber }).ToList();
foreach (dynamic lotInfoColumn in lotInfoRow) foreach (dynamic lotInfoColumn in lotInfoRow) {
{
lot.WIPPartNumber = lotInfoColumn.WP_PART_NUMBER; lot.WIPPartNumber = lotInfoColumn.WP_PART_NUMBER;
lot.WaferQty = lotInfoColumn.WP_CURRENT_QTY; lot.WaferQty = lotInfoColumn.WP_CURRENT_QTY;
lot.PartDescription = lotInfoColumn.MP_DESCRIPTION; lot.PartDescription = lotInfoColumn.MP_DESCRIPTION;
@ -582,64 +372,45 @@ namespace Fab2ApprovalSystem.DMO
} }
public static string GetEmail(int? userID) {
/// <summary> IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="userID"></param>
/// <returns></returns>
public static string GetEmail(int? userID)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters();
parameters.Add("@UserID", userID); parameters.Add("@UserID", userID);
var email = db.Query<string>("GetEmail", parameters, commandType: CommandType.StoredProcedure).Single(); var email = db.Query<string>("GetEmail", parameters, commandType: CommandType.StoredProcedure).Single();
return email; return email;
} }
public static List<string> Get8DEmailListForClosureNotification(int issueID) {
IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
/// <summary> DynamicParameters parameters = new();
///
/// </summary>
/// <param name="issueID"></param>
/// <returns></returns>
public static List<string> Get8DEmailListForClosureNotification(int issueID)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
var parameters = new DynamicParameters();
parameters.Add("@DocID", issueID); parameters.Add("@DocID", issueID);
var emailList = db.Query<string>("_8DGetEmailListClosureNotification", parameters, commandType: CommandType.StoredProcedure).ToList(); List<string> emailList = db.Query<string>("_8DGetEmailListClosureNotification", parameters, commandType: CommandType.StoredProcedure).ToList();
return emailList; return emailList;
} }
public static CredentialsStorage GetCredentialsInfo(string serverName, string credentialType) // TODO - need to use an enum for the credentialType public static CredentialsStorage GetCredentialsInfo(string serverName, string credentialType) // TODO - need to use an enum for the credentialType
{ {
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString); IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
parameters.Add("@ServerName", serverName); parameters.Add("@ServerName", serverName);
parameters.Add("@CredentialType", credentialType); parameters.Add("@CredentialType", credentialType);
var data = db.Query<CredentialsStorage>("GetCredentialsInfo", param: parameters, commandType: CommandType.StoredProcedure).Single(); var data = db.Query<CredentialsStorage>("GetCredentialsInfo", param: parameters, commandType: CommandType.StoredProcedure).Single();
return data; return data;
} }
public List<ApproveListModel> GetApprovalReminderList() public List<ApproveListModel> GetApprovalReminderList() {
{ IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString); List<ApproveListModel> approvals = db.Query<ApproveListModel>("GetApprovalForNotifcation", null, commandType: CommandType.StoredProcedure).ToList();
var approvals = db.Query<ApproveListModel>("GetApprovalForNotifcation", null, commandType: CommandType.StoredProcedure).ToList();
return approvals; return approvals;
} }
public void UpdateApprovalNotifyDate(int approvalId)
{ public void UpdateApprovalNotifyDate(int approvalId) {
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString); IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
parameters.Add("@ApprovalId", approvalId); parameters.Add("@ApprovalId", approvalId);
db.Query<CredentialsStorage>("UpdateApprovalLastNotifyDate", param: parameters, commandType: CommandType.StoredProcedure).Single(); db.Query<CredentialsStorage>("UpdateApprovalLastNotifyDate", param: parameters, commandType: CommandType.StoredProcedure).Single();
//return data;
}
//================================================================== End of Class
} }
} }

View File

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

View File

@ -1,29 +1,19 @@
using System; using System.Configuration;
using System.Collections.Generic;
using System.Configuration;
using System.Data; using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
using System.Linq; using System.Linq;
using System.Web;
using Dapper;
using System.Text; using System.Text;
namespace Fab2ApprovalSystem.DMO using Dapper;
{
public class SAM_DMO
{
private IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["SAMDBConnectionString"].ConnectionString);
namespace Fab2ApprovalSystem.DMO;
public int HasITARAccess(string userID) public class SAM_DMO {
{ private readonly IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["SAMDBConnectionString"].ConnectionString);
StringBuilder query = new StringBuilder("SELECT COUNT(*) FROM dbo.fnIsUserITARCompliant(@UserID) ");
//query.Append("WHERE UserID = @UserID AND AND EmployeeStatus = 'Active'");
return this.db.Query<int>(query.ToString(), new { UserID = userID }).SingleOrDefault();
public int HasITARAccess(string userID) {
StringBuilder query = new("SELECT COUNT(*) FROM dbo.fnIsUserITARCompliant(@UserID) ");
return db.Query<int>(query.ToString(), new { UserID = userID }).SingleOrDefault();
} }
}
} }

View File

@ -1,122 +1,147 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Configuration;
using System.Data; using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
using System.Linq; using System.Linq;
using System.Web;
using Dapper; using Dapper;
using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models; using Fab2ApprovalSystem.Models;
using System.Text;
namespace Fab2ApprovalSystem.DMO namespace Fab2ApprovalSystem.DMO;
{
public class TrainingDMO public class TrainingDMO {
{ private readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
private IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString); #if !NET8
private static FabApprovalTrainingEntities FabApprovalDB = new FabApprovalTrainingEntities(); private static FabApprovalTrainingEntities FabApprovalDB = new FabApprovalTrainingEntities();
#endif
public int Create(int issueId) public int Create(int issueId) {
{ DynamicParameters parameters = new();
var parameters = new DynamicParameters();
parameters = new DynamicParameters();
parameters.Add("@TrainingId", dbType: DbType.Int32, direction: ParameterDirection.InputOutput); parameters.Add("@TrainingId", dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
parameters.Add("@ECNNumber", issueId); parameters.Add("@ECNNumber", issueId);
this.db.Execute("InsertTrainingItem", parameters, commandType: CommandType.StoredProcedure); db.Execute("InsertTrainingItem", parameters, commandType: CommandType.StoredProcedure);
int trainingId = parameters.Get<int>("@TrainingId"); int trainingId = parameters.Get<int>("@TrainingId");
return trainingId; return trainingId;
} }
public int CreateAssignment(int trainingId, int userId)
{
var parameters = new DynamicParameters();
parameters = new DynamicParameters(); public int CreateAssignment(int trainingId, int userId) {
//parameters.Add("@TrainingId", dbType: DbType.Int32, direction: ParameterDirection.InputOutput); DynamicParameters parameters = new();
parameters.Add("@TrainingID", trainingId); parameters.Add("@TrainingID", trainingId);
parameters.Add("@UserID", userId); parameters.Add("@UserID", userId);
parameters.Add("@AssignmentID", dbType: DbType.Int32, direction: ParameterDirection.InputOutput); parameters.Add("@AssignmentID", dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
this.db.Execute("InsertTrainingAssignment", parameters, commandType: CommandType.StoredProcedure); db.Execute("InsertTrainingAssignment", parameters, commandType: CommandType.StoredProcedure);
int assignmentId = parameters.Get<int>("@AssignmentID"); int assignmentId = parameters.Get<int>("@AssignmentID");
return assignmentId; return assignmentId;
} }
public IEnumerable<Training> GetAllTrainings()
{ public IEnumerable<Training> GetAllTrainings() {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
IEnumerable<Training> allTrainings = (from a in db.Trainings select a).ToList(); IEnumerable<Training> allTrainings = (from a in db.Trainings select a).ToList();
return allTrainings; return allTrainings;
#else
throw new NotImplementedException();
#endif
} }
public Training GetTraining(int trainingId)
{ public Training GetTraining(int trainingId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
Training trainingRecord = new Training(); Training trainingRecord = new Training();
trainingRecord = (from a in db.Trainings where a.TrainingID == trainingId select a).FirstOrDefault(); trainingRecord = (from a in db.Trainings where a.TrainingID == trainingId select a).FirstOrDefault();
return trainingRecord; return trainingRecord;
#else
throw new NotImplementedException();
#endif
} }
public TrainingAssignment GetAssignment(int assignmentId)
{ public TrainingAssignment GetAssignment(int assignmentId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
TrainingAssignment assignmentRecord = (from a in db.TrainingAssignments where a.ID == assignmentId select a).FirstOrDefault(); TrainingAssignment assignmentRecord = (from a in db.TrainingAssignments where a.ID == assignmentId select a).FirstOrDefault();
return assignmentRecord; return assignmentRecord;
#else
throw new NotImplementedException();
#endif
} }
public int GetTrainingId(int issueId)
{ public int GetTrainingId(int issueId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
int ECNId = issueId; int ECNId = issueId;
int trainingId = (from a in db.Trainings where a.ECN == ECNId select a.TrainingID).FirstOrDefault(); int trainingId = (from a in db.Trainings where a.ECN == ECNId select a.TrainingID).FirstOrDefault();
return trainingId; return trainingId;
#else
throw new NotImplementedException();
#endif
} }
public List<int> GetTrainees(int groupId)
{ public List<int> GetTrainees(int groupId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var users = (from a in db.TrainingGroupMembers where a.TrainingGroupID == groupId select a.UserID).ToList(); var users = (from a in db.TrainingGroupMembers where a.TrainingGroupID == groupId select a.UserID).ToList();
return users; return users;
#else
throw new NotImplementedException();
#endif
} }
public bool isUserTrainingMember(int groupId, int userId)
{ public bool isUserTrainingMember(int groupId, int userId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var users = (from a in db.TrainingGroupMembers where a.TrainingGroupID == groupId && a.UserID == userId select a).FirstOrDefault(); var users = (from a in db.TrainingGroupMembers where a.TrainingGroupID == groupId && a.UserID == userId select a).FirstOrDefault();
if (users == null) if (users == null) {
{
return false; return false;
} } else {
else
{
return true; return true;
} }
#else
throw new NotImplementedException();
#endif
} }
public List<TrainingGroup> GetTrainingGroups()
{ public List<TrainingGroup> GetTrainingGroups() {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
return (from a in db.TrainingGroups select a).ToList(); return (from a in db.TrainingGroups select a).ToList();
#else
throw new NotImplementedException();
#endif
} }
public TrainingGroup GetTrainingGroupByID(int groupId)
{ public TrainingGroup GetTrainingGroupByID(int groupId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
TrainingGroup groups = (from a in db.TrainingGroups where a.TrainingGroupID == groupId select a).FirstOrDefault(); TrainingGroup groups = (from a in db.TrainingGroups where a.TrainingGroupID == groupId select a).FirstOrDefault();
return groups; return groups;
#else
throw new NotImplementedException();
#endif
} }
public List<int> GetECNAssignedTrainingGroups(int ECNNumber)
{ public List<int> GetECNAssignedTrainingGroups(int ECNNumber) {
#if !NET8
List<int> trainingGroups = (from a in FabApprovalDB.ECNTrainingBies where a.ECNNumber == ECNNumber select a.AcknowledgementTrainingByID).ToList(); List<int> trainingGroups = (from a in FabApprovalDB.ECNTrainingBies where a.ECNNumber == ECNNumber select a.AcknowledgementTrainingByID).ToList();
return trainingGroups; return trainingGroups;
#else
throw new NotImplementedException();
#endif
} }
public void AddTrainingGroupToECN(int ECNNumber, int groupId)
{ public void AddTrainingGroupToECN(int ECNNumber, int groupId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
//ECNTrainingBy ecnTraining = new ECNTrainingBy();
//ecnTraining.AcknowledgementTrainingByID = groupId;
//ecnTraining.ECNNumber = ECNNumber;
var parameters = new DynamicParameters(); var parameters = new DynamicParameters();
parameters.Add("@ECNNumber", ECNNumber); parameters.Add("@ECNNumber", ECNNumber);
@ -124,329 +149,372 @@ namespace Fab2ApprovalSystem.DMO
this.db.Execute("ECNInsertTrainingBy", parameters, commandType: CommandType.StoredProcedure); this.db.Execute("ECNInsertTrainingBy", parameters, commandType: CommandType.StoredProcedure);
#else
throw new NotImplementedException();
#endif
//db.ECNTrainingBies.Add(ecnTraining);
} }
public void SetTrainingFlag(int ECNNumber)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
//ECNTrainingBy ecnTraining = new ECNTrainingBy();
//ecnTraining.AcknowledgementTrainingByID = groupId;
//ecnTraining.ECNNumber = ECNNumber;
public void SetTrainingFlag(int ECNNumber) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var parameters = new DynamicParameters(); var parameters = new DynamicParameters();
parameters.Add("@ECNNumber", ECNNumber); parameters.Add("@ECNNumber", ECNNumber);
this.db.Execute("ECNSetTrainingFlag", parameters, commandType: CommandType.StoredProcedure); this.db.Execute("ECNSetTrainingFlag", parameters, commandType: CommandType.StoredProcedure);
#else
throw new NotImplementedException();
#endif
//db.ECNTrainingBies.Add(ecnTraining);
} }
public List<TrainingAssignment> GetAllTrainingAssignments(int TrainingID)
{ public List<TrainingAssignment> GetAllTrainingAssignments(int TrainingID) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID select a; var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID select a;
RefreshTrainingData(TrainingID, TrainingData);
TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID select a;
return TrainingData.ToList(); return TrainingData.ToList();
#else
throw new NotImplementedException();
#endif
} }
public List<TrainingAssignment> GetTrainingAssignments(int TrainingID)
{ public List<TrainingAssignment> GetTrainingAssignments(int TrainingID) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID && a.Deleted != true select a; var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID && a.Deleted != true select a;
RefreshTrainingData(TrainingID, TrainingData);
TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID select a;
return TrainingData.ToList(); return TrainingData.ToList();
#else
throw new NotImplementedException();
#endif
} }
public List<TrainingAssignment> GetTrainingAssignmentsByUser(int TrainingID, int userID)
{ public List<TrainingAssignment> GetTrainingAssignmentsByUser(int TrainingID, int userID) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID && a.UserID == userID select a; var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID && a.UserID == userID select a;
return TrainingData.ToList(); return TrainingData.ToList();
#else
throw new NotImplementedException();
#endif
} }
public List<TrainingDocAck> GetAssignedDocs(int trainingAssignmentId)
{ public List<TrainingDocAck> GetAssignedDocs(int trainingAssignmentId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var docs = (from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentId && a.Deleted != true select a).ToList(); var docs = (from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentId && a.Deleted != true select a).ToList();
return docs; return docs;
#else
throw new NotImplementedException();
#endif
} }
public void AcknowledgeDocument(int trainingDocAckID)
{
var parameters = new DynamicParameters();
parameters = new DynamicParameters(); public void AcknowledgeDocument(int trainingDocAckID) {
DynamicParameters parameters = new();
parameters.Add("@TrainingDocAckID", trainingDocAckID); parameters.Add("@TrainingDocAckID", trainingDocAckID);
//parameters.Add("@AttachmentID", attachmentID);
this.db.Execute("TrainingAcknowledgeDocument", parameters, commandType: CommandType.StoredProcedure);
db.Execute("TrainingAcknowledgeDocument", parameters, commandType: CommandType.StoredProcedure);
} }
public void UpdateAssignmentStatus(int trainingAssignmentID)
{ public void UpdateAssignmentStatus(int trainingAssignmentID) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var RecordToUpdate = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a).SingleOrDefault(); var RecordToUpdate = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a).SingleOrDefault();
if(RecordToUpdate.status != true) if (RecordToUpdate.status != true) {
{
RecordToUpdate.DateCompleted = DateTime.Now; RecordToUpdate.DateCompleted = DateTime.Now;
RecordToUpdate.status = true; RecordToUpdate.status = true;
try try {
{
db.SaveChanges(); db.SaveChanges();
} } catch (InvalidOperationException e) {
catch (InvalidOperationException e)
{
string exception = e.ToString(); string exception = e.ToString();
Console.WriteLine(e); Console.WriteLine(e);
} }
} }
#else
throw new NotImplementedException();
#endif
} }
public int GetTrainingIdByAssignment(int trainingAssignmentID)
{ public int GetTrainingIdByAssignment(int trainingAssignmentID) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
int trainingID = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a.TrainingID).SingleOrDefault(); int trainingID = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a.TrainingID).SingleOrDefault();
return trainingID; return trainingID;
#else
throw new NotImplementedException();
#endif
} }
public void UpdateTrainingStatus(int trainingId)
{ public void UpdateTrainingStatus(int trainingId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).SingleOrDefault(); Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).SingleOrDefault();
if (training != null) if (training != null) {
{
training.CompletedDate = DateTime.Now; training.CompletedDate = DateTime.Now;
training.Status = true; training.Status = true;
try try {
{
db.SaveChanges(); db.SaveChanges();
} } catch (InvalidOperationException e) {
catch (InvalidOperationException e)
{
string exception = e.ToString(); string exception = e.ToString();
Console.WriteLine(e); Console.WriteLine(e);
} }
} }
#else
throw new NotImplementedException();
#endif
} }
public void reOpenTraining(int trainingId)
{ public void reOpenTraining(int trainingId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).SingleOrDefault(); Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).SingleOrDefault();
if (training != null) if (training != null) {
{
training.CompletedDate = null; training.CompletedDate = null;
training.Status = false; training.Status = false;
try try {
{
db.SaveChanges(); db.SaveChanges();
} } catch (InvalidOperationException e) {
catch (InvalidOperationException e)
{
string exception = e.ToString(); string exception = e.ToString();
Console.WriteLine(e); Console.WriteLine(e);
} }
} }
#else
throw new NotImplementedException();
#endif
} }
public bool CheckTrainingStatus(int trainingAssignmentID) public bool CheckTrainingStatus(int trainingAssignmentID) {
{ #if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
bool isFinished = true; bool isFinished = true;
int trainingID = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a.TrainingID).SingleOrDefault(); int trainingID = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a.TrainingID).SingleOrDefault();
var trainingAssignments = from a in db.TrainingAssignments where a.TrainingID == trainingID && a.Deleted != true select a; var trainingAssignments = from a in db.TrainingAssignments where a.TrainingID == trainingID && a.Deleted != true select a;
foreach (var training in trainingAssignments) foreach (var training in trainingAssignments) {
{ if (training.status == false) {
if (training.status == false)
{
isFinished = false; isFinished = false;
} }
} }
return isFinished; return isFinished;
#else
throw new NotImplementedException();
#endif
} }
public bool CheckTrainingAssignmentStatus(int trainingAssignmentID) public bool CheckTrainingAssignmentStatus(int trainingAssignmentID) {
{ #if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
bool isFinished = true; bool isFinished = true;
//TrainingDocAck docsAssigned = null; // TrainingDocAck docsAssigned = null;
var docsAssigned = from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentID && a.Deleted != true select a; var docsAssigned = from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentID && a.Deleted != true select a;
foreach (var doc in docsAssigned) {
if (doc.Reviewed == false) {
foreach (var doc in docsAssigned)
{
if (doc.Reviewed == false)
{
isFinished = false; isFinished = false;
} }
} }
return isFinished; return isFinished;
#else
throw new NotImplementedException();
#endif
} }
public bool IsUserAssigned(int userId, int trainingId)
{ public bool IsUserAssigned(int userId, int trainingId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
bool userHasAssignment = false; bool userHasAssignment = false;
var assignments = (from a in db.TrainingAssignments where a.TrainingID == trainingId && a.UserID == userId && a.Deleted != true select a).ToList(); var assignments = (from a in db.TrainingAssignments where a.TrainingID == trainingId && a.UserID == userId && a.Deleted != true select a).ToList();
if(assignments.Count() > 0) if (assignments.Count() > 0) {
{
userHasAssignment = true; userHasAssignment = true;
} }
return userHasAssignment; return userHasAssignment;
#else
throw new NotImplementedException();
#endif
} }
public List<Training> GetTrainings()
{ public List<Training> GetTrainings() {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var trainings = from a in db.Trainings select a; var trainings = from a in db.Trainings select a;
return trainings.ToList(); return trainings.ToList();
#else
throw new NotImplementedException();
#endif
} }
public List<TrainingAssignment> GetTrainingAssignmentsByUserID(int userID)
{ public List<TrainingAssignment> GetTrainingAssignmentsByUserID(int userID) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var trainingAssignments = from a in db.TrainingAssignments where a.UserID == userID && a.Deleted != true select a; var trainingAssignments = from a in db.TrainingAssignments where a.UserID == userID && a.Deleted != true select a;
return trainingAssignments.ToList(); return trainingAssignments.ToList();
#else
throw new NotImplementedException();
#endif
} }
public void DeleteTrainingAssignment(int trainingAssignmentId) public void DeleteTrainingAssignment(int trainingAssignmentId) {
{ #if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var trainingAssignments = from a in db.TrainingAssignments where a.ID == trainingAssignmentId select a; var trainingAssignments = from a in db.TrainingAssignments where a.ID == trainingAssignmentId select a;
foreach (var item in trainingAssignments) foreach (var item in trainingAssignments) {
{
item.Deleted = true; item.Deleted = true;
item.DeletedDate = DateTime.Now; item.DeletedDate = DateTime.Now;
} }
try try {
{
db.SaveChanges(); db.SaveChanges();
} } catch (InvalidOperationException e) {
catch (InvalidOperationException e)
{
string exception = e.ToString(); string exception = e.ToString();
Console.WriteLine(e); Console.WriteLine(e);
} }
#else
throw new NotImplementedException();
#endif
} }
public void DeleteTrainingDocAck(int trainingAssignmentId)
{ public void DeleteTrainingDocAck(int trainingAssignmentId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var trainingDocAcks = from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentId select a; var trainingDocAcks = from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentId select a;
foreach (var item in trainingDocAcks) foreach (var item in trainingDocAcks) {
{
item.Deleted = true; item.Deleted = true;
item.DeletedDate = DateTime.Now; item.DeletedDate = DateTime.Now;
} }
try try {
{
db.SaveChanges(); db.SaveChanges();
} } catch (InvalidOperationException e) {
catch (InvalidOperationException e)
{
string exception = e.ToString(); string exception = e.ToString();
Console.WriteLine(e); Console.WriteLine(e);
} }
#else
throw new NotImplementedException();
#endif
} }
public void DeleteTraining(int trainingId)
{ public void DeleteTraining(int trainingId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).FirstOrDefault(); Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).FirstOrDefault();
if (training != null) {
training.Deleted = true; training.Deleted = true;
training.DeletedDate = DateTime.Now; training.DeletedDate = DateTime.Now;
}
List<TrainingAssignment> trainingAssignments = (from a in db.TrainingAssignments where a.TrainingID == trainingId select a).ToList(); List<TrainingAssignment> trainingAssignments = (from a in db.TrainingAssignments where a.TrainingID == trainingId select a).ToList();
db.SaveChanges(); db.SaveChanges();
foreach (TrainingAssignment trainingAssignment in trainingAssignments) foreach (TrainingAssignment trainingAssignment in trainingAssignments) {
{
DeleteTrainingAssignment(trainingAssignment.ID); DeleteTrainingAssignment(trainingAssignment.ID);
DeleteTrainingDocAck(trainingAssignment.ID); DeleteTrainingDocAck(trainingAssignment.ID);
//db.SaveChanges(); }
#else
throw new NotImplementedException();
#endif
} }
public void DeleteAssignmentByUserId(int userId) {
} #if !NET8
public void DeleteAssignmentByUserId(int userId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var userAssignments = (from a in db.TrainingAssignments where a.UserID == userId select a).ToList(); var userAssignments = (from a in db.TrainingAssignments where a.UserID == userId select a).ToList();
foreach (var item in userAssignments) foreach (var item in userAssignments) {
{ // get document assignments
//get document assignments
var docAssignments = (from a in db.TrainingDocAcks where a.TrainingAssignmentID == item.TrainingID select a).ToList(); var docAssignments = (from a in db.TrainingDocAcks where a.TrainingAssignmentID == item.TrainingID select a).ToList();
//delete each docAssignment // delete each docAssignment
foreach (var docAssignment in docAssignments) foreach (var docAssignment in docAssignments) {
{
DeleteTrainingDocAck(docAssignment.ID); DeleteTrainingDocAck(docAssignment.ID);
} }
DeleteTrainingAssignment(item.ID); DeleteTrainingAssignment(item.ID);
} }
#else
throw new NotImplementedException();
#endif
} }
public bool CheckValidDocAck(int docAckId)
{ public bool CheckValidDocAck(int docAckId) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
TrainingDocAck ack = (from a in db.TrainingDocAcks where a.ID == docAckId select a).FirstOrDefault(); TrainingDocAck ack = (from a in db.TrainingDocAcks where a.ID == docAckId select a).FirstOrDefault();
//TODO Check the user is valid // TODO Check the user is valid
//Check that the assignment exists // Check that the assignment exists
if (ack != null) if (ack != null) {
{ // Check that the assignment isn't deleted
//Check that the assignment isn't deleted if (ack.Deleted == true) {
if (ack.Deleted == true)
{
return false; return false;
} }
//Check that the assignment isn't completed // Check that the assignment isn't completed
else if (ack.Reviewed == true) else if (ack.Reviewed == true) {
{
return false; return false;
} } else {
else
{
return true; return true;
} }
} } else {
else
{
return false; return false;
} }
#else
throw new NotImplementedException();
#endif
} }
public List<Training> GetAllOpenTrainings()
{ public List<Training> GetAllOpenTrainings() {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
List<Training> openTrainings = (from a in db.Trainings where a.Status != true && a.Deleted != true select a).ToList(); List<Training> openTrainings = (from a in db.Trainings where a.Status != true && a.Deleted != true select a).ToList();
return openTrainings; return openTrainings;
#else
throw new NotImplementedException();
#endif
} }
public List<TrainingAssignment> GetOpenAssignmentsByTrainingID(int trainingID)
{ public List<TrainingAssignment> GetOpenAssignmentsByTrainingID(int trainingID) {
#if !NET8
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities(); FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
List<TrainingAssignment> openAssignments = (from a in FabApprovalDB.TrainingAssignments where a.TrainingID == trainingID && a.status != true && a.Deleted != true select a).ToList(); List<TrainingAssignment> openAssignments = (from a in FabApprovalDB.TrainingAssignments where a.TrainingID == trainingID && a.status != true && a.Deleted != true select a).ToList();
return openAssignments; return openAssignments;
#else
throw new NotImplementedException();
#endif
} }
private void RefreshTrainingData(int TrainingID, IQueryable<TrainingAssignment> TrainingData) {
bool assignmentIsIncomplete = false;
UserAccountDMO userAccountDMO = new();
foreach (TrainingAssignment assignment in TrainingData) {
LoginModel userModel = userAccountDMO.GetUserByID(assignment.UserID);
if (!userModel.IsActive)
UpdateAssignmentStatus(assignment.ID);
if (assignment.Deleted != true && (assignment.DateCompleted is null || assignment.DateCompleted > DateTime.Now))
assignmentIsIncomplete = true;
}
if (!assignmentIsIncomplete)
UpdateTrainingStatus(TrainingID);
} }
} }

View File

@ -1,134 +1,80 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Configuration;
using System.Data; using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
using System.Linq; using System.Linq;
using System.Web;
using Dapper;
using Fab2ApprovalSystem.Models;
using System.Text; using System.Text;
using Dapper;
namespace Fab2ApprovalSystem.DMO using Fab2ApprovalSystem.Misc;
{ using Fab2ApprovalSystem.Models;
public class UserAccountDMO
{
private IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
namespace Fab2ApprovalSystem.DMO;
//public List<LoginModel> GetUser(string loginID) public class UserAccountDMO {
//{ private readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
// StringBuilder sql = new StringBuilder();
// sql.Append("SELECT * FROM Users WHERE LoginID = '" + loginID + "'");
// return this.db.Query<LoginModel>(sql.ToString()).ToList(); public IEnumerable<LoginModel> GetAllUsers() {
//} StringBuilder sql = new();
public IEnumerable<LoginModel> GetAllUsers()
{
StringBuilder sql = new StringBuilder();
//sql.Append("SELECT U.FirstName + ' ' + U.LastName AS FullName, U1.FirstName + ' ' + U1.LastName AS DelegatedToFullName, U.* ");
//sql.Append("FROM Users U LEFT JOIN Users U1 ");
//sql.Append("ON U.UserID = U1.DelegatedTo ORDER BY FirstName ");
//sql.Append("SELECT FirstName + ' ' + LastName AS FullName, * FROM Users ORDER BY FirstName ");
sql.Append(" SELECT U.FirstName + ' ' + U.LastName AS FullName, U.* , U1.FirstName + ' ' + U1.LastName AS DelegatedToFullName "); sql.Append(" SELECT U.FirstName + ' ' + U.LastName AS FullName, U.* , U1.FirstName + ' ' + U1.LastName AS DelegatedToFullName ");
sql.Append("FROM Users U LEFT JOIN Users U1 ON U.DelegatedTo = U1.UserID "); sql.Append("FROM Users U LEFT JOIN Users U1 ON U.DelegatedTo = U1.UserID ");
sql.Append("ORDER BY FirstName "); sql.Append("ORDER BY FirstName ");
return this.db.Query<LoginModel>(sql.ToString()).ToList(); return db.Query<LoginModel>(sql.ToString()).ToList();
} }
public IEnumerable<LoginModel> GetAllActiveUsers()
{
StringBuilder sql = new StringBuilder();
//sql.Append("SELECT U.FirstName + ' ' + U.LastName AS FullName, U1.FirstName + ' ' + U1.LastName AS DelegatedToFullName, U.* ");
//sql.Append("FROM Users U LEFT JOIN Users U1 ");
//sql.Append("ON U.UserID = U1.DelegatedTo ORDER BY FirstName ");
//sql.Append("SELECT FirstName + ' ' + LastName AS FullName, * FROM Users ORDER BY FirstName "); public IEnumerable<LoginModel> GetAllActiveUsers() {
StringBuilder sql = new();
sql.Append(" SELECT U.FirstName + ' ' + U.LastName AS FullName, U.* , U1.FirstName + ' ' + U1.LastName AS DelegatedToFullName "); sql.Append(" SELECT U.FirstName + ' ' + U.LastName AS FullName, U.* , U1.FirstName + ' ' + U1.LastName AS DelegatedToFullName ");
sql.Append("FROM Users U LEFT JOIN Users U1 ON U.DelegatedTo = U1.UserID "); sql.Append("FROM Users U LEFT JOIN Users U1 ON U.DelegatedTo = U1.UserID ");
sql.Append("WHERE U.IsActive = 1 "); sql.Append("WHERE U.IsActive = 1 ");
sql.Append("ORDER BY FirstName "); sql.Append("ORDER BY FirstName ");
return this.db.Query<LoginModel>(sql.ToString()).ToList(); return db.Query<LoginModel>(sql.ToString()).ToList();
} }
public LoginModel GetUser(string loginID) =>
db.Query<LoginModel>("SELECT FirstName + ' ' + LastName AS FullName, * FROM Users WHERE LoginID = @loginID AND IsActive = 1 ", new { loginID = loginID }).Take(1).SingleOrDefault();
public LoginModel GetUserByID(int userID) {
return db.Query<LoginModel>(
public LoginModel GetUser(string loginID)
{
//StringBuilder sql = new StringBuilder();
//sql.Append("SELECT * FROM Users WHERE LoginID = '" + loginID + "'");
//return this.db.Query<LoginModel>(sql.ToString()).SingleOrDefault();
return this.db.Query<LoginModel>("SELECT FirstName + ' ' + LastName AS FullName, * FROM Users WHERE LoginID = @loginID AND IsActive = 1 ", new { loginID = loginID }).Take(1).SingleOrDefault();
}
public LoginModel GetUserByID(int userID)
{
return this.db.Query<LoginModel>(
"SELECT FirstName + ' ' + LastName AS FullName, * FROM Users WHERE UserID = @UserID ", "SELECT FirstName + ' ' + LastName AS FullName, * FROM Users WHERE UserID = @UserID ",
new { UserID = userID }).Take(1).SingleOrDefault(); new { UserID = userID }).Take(1).SingleOrDefault();
} }
public string GetUserEmailByID(string userID) public string GetUserEmailByID(int userID) {
{ return db.Query<string>(
return this.db.Query<string>(
"SELECT Email FROM Users WHERE UserID = @UserID ", "SELECT Email FROM Users WHERE UserID = @UserID ",
new { UserID = userID }).Take(1).SingleOrDefault(); new { UserID = userID }).Take(1).SingleOrDefault();
} }
/// <summary> internal void UpdateUser(LoginModel model) {
///
/// </summary>
/// <param name="model"></param>
internal void UpdateUser(LoginModel model)
{
string sql; string sql;
sql = "UPDATE Users SET LoginID = @LoginID, FirstName = @FirstName, LastName = @LastName, Email = @Email, IsActive = @IsActive, IsAdmin = @IsAdmin WHERE UserID = @UserID"; sql = "UPDATE Users SET LoginID = @LoginID, FirstName = @FirstName, LastName = @LastName, Email = @Email, IsActive = @IsActive, IsAdmin = @IsAdmin WHERE UserID = @UserID";
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
parameters.Add("@UserID", model.UserID); parameters.Add("@UserID", model.UserID);
parameters.Add("@LoginID", model.LoginID); parameters.Add("@LoginID", model.LoginID);
parameters.Add("@FirstName", model.FirstName); parameters.Add("@FirstName", model.FirstName);
parameters.Add("@LastName", model.LastName ); parameters.Add("@LastName", model.LastName);
parameters.Add("@Email", model.Email); parameters.Add("@Email", model.Email);
parameters.Add("@IsAdmin", model.IsAdmin); parameters.Add("@IsAdmin", model.IsAdmin);
parameters.Add("@IsActive", model.IsActive); parameters.Add("@IsActive", model.IsActive);
this.db.Execute(sql, parameters); db.Execute(sql, parameters);
} }
/// <summary> internal void DeleteUser(LoginModel model) {
///
/// </summary>
/// <param name="model"></param>
internal void DeleteUser(LoginModel model)
{
string sql; string sql;
//sql = "DELETE Users WHERE UserID = @UserID";
sql = "UPDATE Users SET IsActive = 0 WHERE UserID = @UserID"; sql = "UPDATE Users SET IsActive = 0 WHERE UserID = @UserID";
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
parameters.Add("@UserID", model.UserID); parameters.Add("@UserID", model.UserID);
this.db.Execute(sql, parameters); db.Execute(sql, parameters);
} }
internal void InsertUser(LoginModel model) {
/// <summary> DynamicParameters parameters = new();
///
/// </summary>
/// <param name="model"></param>
internal void InsertUser(LoginModel model)
{
//string sql;
//sql = "INSERT Users (LoginID, FirstName, LastName, IsAdmin) VALUES (@LoginID, @FirstName, @LastName, @IsAdmin )";
var parameters = new DynamicParameters();
parameters.Add("@UserID", model.UserID, DbType.Int32, direction: ParameterDirection.InputOutput); parameters.Add("@UserID", model.UserID, DbType.Int32, direction: ParameterDirection.InputOutput);
parameters.Add("@LoginID", model.LoginID); parameters.Add("@LoginID", model.LoginID);
parameters.Add("@FirstName", model.FirstName); parameters.Add("@FirstName", model.FirstName);
@ -136,39 +82,24 @@ namespace Fab2ApprovalSystem.DMO
parameters.Add("@Email", model.Email); parameters.Add("@Email", model.Email);
parameters.Add("@IsAdmin", model.IsAdmin); parameters.Add("@IsAdmin", model.IsAdmin);
this.db.Execute("InsertUsers", parameters, commandType: CommandType.StoredProcedure); db.Execute("InsertUsers", parameters, commandType: CommandType.StoredProcedure);
int userid = parameters.Get<int>("@UserID"); int userid = parameters.Get<int>("@UserID");
model.UserID = userid; model.UserID = userid;
} }
/// <summary> internal void UpdateInsertITARAccess(string userID, string hasITARAccess) {
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="userID"></param>
/// <param name="hasITARAccess"></param>
internal void UpdateInsertITARAccess(string userID, string hasITARAccess)
{
var parameters = new DynamicParameters();
parameters.Add("@UserID", userID); parameters.Add("@UserID", userID);
parameters.Add("@HasITARAccess", hasITARAccess); parameters.Add("@HasITARAccess", hasITARAccess);
this.db.Execute("ITARAccessUpdateInsert", parameters, commandType: CommandType.StoredProcedure); db.Execute("ITARAccessUpdateInsert", parameters, commandType: CommandType.StoredProcedure);
} }
/// <summary> internal bool GetITARAccess(int userID) {
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="userID"></param>
/// <returns></returns>
internal bool GetITARAccess(int userID)
{
var parameters = new DynamicParameters();
parameters.Add("@UserID", userID); parameters.Add("@UserID", userID);
var results = this.db.Query<string>( var results = db.Query<string>(
"SELECT HasITARAccess FROM SAMUsers, Users WHERE Users.UserID = @UserID AND SAMUsers.UserID = Users.LoginID", "SELECT HasITARAccess FROM SAMUsers, Users WHERE Users.UserID = @UserID AND SAMUsers.UserID = Users.LoginID",
parameters, commandType: CommandType.Text); parameters, commandType: CommandType.Text);
if ((results != null) && (results.Count() > 0) && (results.First() == "1")) if ((results != null) && (results.Count() > 0) && (results.First() == "1"))
@ -177,17 +108,11 @@ namespace Fab2ApprovalSystem.DMO
return false; return false;
} }
/// <summary> internal bool GetEC_AD_Users(string userID) {
/// DynamicParameters parameters = new();
/// </summary>
/// <param name="userID"></param>
/// <returns></returns>
internal bool GetEC_AD_Users(string userID)
{
var parameters = new DynamicParameters();
parameters.Add("@UserID", userID); parameters.Add("@UserID", userID);
var results = this.db.Query<string>( var results = db.Query<string>(
"SELECT UserID FROM EC_AD_Users WHERE UserID = @UserID", "SELECT UserID FROM EC_AD_Users WHERE UserID = @UserID",
parameters, commandType: CommandType.Text); parameters, commandType: CommandType.Text);
if ((results != null) && (results.Count() > 0)) if ((results != null) && (results.Count() > 0))
@ -196,17 +121,13 @@ namespace Fab2ApprovalSystem.DMO
return false; return false;
} }
internal void ProcessOoO() internal void ProcessOoO() {
{ DynamicParameters parameters = new();
var parameters = new DynamicParameters(); db.Execute("ProcesOOOEnableStatus", commandType: CommandType.StoredProcedure);
this.db.Execute("ProcesOOOEnableStatus", commandType: CommandType.StoredProcedure);
} }
internal void ExpireOoO()
{
var parameters = new DynamicParameters();
this.db.Execute("ProcesOOOExpiration", commandType: CommandType.StoredProcedure);
} internal void ExpireOoO() {
DynamicParameters parameters = new();
db.Execute("ProcesOOOExpiration", commandType: CommandType.StoredProcedure);
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@ Title: {1}
<br/> <br/>
<br/> <br/>
https://messa016ec.ec.local/{0}/Edit?IssueID={2} https://messa016ec.infineon.com/{0}/Edit?IssueID={2}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -7,7 +7,7 @@
Please log on to the Approval website to view the assignment and act accordingly Please log on to the Approval website to view the assignment and act accordingly
<br/><br/> <br/><br/>
https://messa016ec.ec.local/CorrectiveAction/Edit?issueID={4} https://messa016ec.infineon.com/CorrectiveAction/Edit?issueID={4}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
Corrective Action# {0} is ready for your approval. Please log on to the Approval website and review this item for <strong>FINAL Approval or Rejection</strong>. Corrective Action# {0} is ready for your approval. Please log on to the Approval website and review this item for <strong>FINAL Approval or Rejection</strong>.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/CorrectiveAction/Edit?issueID={1} https://messa016ec.infineon.com/CorrectiveAction/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -7,7 +7,7 @@ Corrective Action# {0} has been assigned to you.
Please log on to the Approval website to view the assignment and act accordingly Please log on to the Approval website to view the assignment and act accordingly
<br/><br/> <br/><br/>
https://messa016ec.ec.local/CorrectiveAction/Edit?issueID={3} https://messa016ec.infineon.com/CorrectiveAction/Edit?issueID={3}
<br/><br/> <br/><br/>
D3 Due Date: {4} D3 Due Date: {4}
<br/> <br/>

View File

@ -6,7 +6,7 @@ Corrective Action {0} has been completed
<br/><br/> <br/><br/>
https://messa016ec.ec.local/CorrectiveAction/Edit?issueID={2} https://messa016ec.infineon.com/CorrectiveAction/Edit?issueID={2}
<br/><br/> <br/><br/>
Thank you for your effort. Follow up date has been set for {3} Thank you for your effort. Follow up date has been set for {3}
<br/><br/> <br/><br/>

View File

@ -8,7 +8,7 @@ Action needs to be completed by {1}
Please log on to the Approval website to view the assignment and act accordingly Please log on to the Approval website to view the assignment and act accordingly
<br/><br/> <br/><br/>
https://messa016ec.ec.local/Audit/Edit?issueID={4} https://messa016ec.infineon.com/Audit/Edit?issueID={4}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
Corrective Action# {0} Re-Assigned to you for you approval. Please log on to the Approval website and review this item for Approval or Rejection. Corrective Action# {0} Re-Assigned to you for you approval. Please log on to the Approval website and review this item for Approval or Rejection.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/CorrectiveAction/Edit?issueID={1} https://messa016ec.infineon.com/CorrectiveAction/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -9,7 +9,7 @@ Reason For Reject:
<br/><br/> <br/><br/>
Please log on to the Approval website and review this item for re-submission. Please log on to the Approval website and review this item for re-submission.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/CorrectiveAction/Edit?issueID={1} https://messa016ec.infineon.com/CorrectiveAction/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -1,13 +1,13 @@
<font size="2" face="verdana"> <font size="2" face="verdana">
*****Please DO NOT reply to this email***** *****Please DO NOT reply to this email*****
<br/><br/> <br/><br/>
Corrective Action# {1} section {3} has been approved. Corrective Action# {0} section {3} has been approved.
<br/><br/> <br/><br/>
Please log on to the Approval website to view the section and act accordingly Please log on to the Approval website to view the section and act accordingly
<br/><br/> <br/><br/>
https://messa016ec.ec.local/CorrectiveAction/Edit?issueID={0} https://messa016ec.infineon.com/CorrectiveAction/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -7,7 +7,7 @@ Corrective Action# {0} section {3} has been assigned to you for approval.
Please log on to the Approval website to view the assignment and act accordingly Please log on to the Approval website to view the assignment and act accordingly
<br/><br/> <br/><br/>
https://messa016ec.ec.local/CorrectiveAction/Edit?issueID={1} https://messa016ec.infineon.com/CorrectiveAction/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -1,13 +1,16 @@
<font size="2" face="verdana"> <font size="2" face="verdana">
*****Please DO NOT reply to this email***** *****Please DO NOT reply to this email*****
<br/><br/> <br/><br/>
Corrective Action# {0} section {3} has been rejected. Corrective Action# {0} section {3} has been rejected by {4}.
<br/><br/>
Rejection reason: {5}
<br/><br/> <br/><br/>
Please log on to the Approval website to view the section and act accordingly Please log on to the Approval website to view the section and act accordingly
<br/><br/> <br/><br/>
https://messa016ec.ec.local/CorrectiveAction/Edit?issueID={1} {2}/CorrectiveAction/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -7,7 +7,7 @@ Corrective Action# {1} section D5/D6/D7(Corrective/Preventitive Actions) has bee
Please log on to the Approval website to view the section and act accordingly Please log on to the Approval website to view the section and act accordingly
<br/><br/> <br/><br/>
https://messa016ec.ec.local/CorrectiveAction/Edit?issueID={0} https://messa016ec.infineon.com/CorrectiveAction/Edit?issueID={0}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
Corrective Action# {0} section {4} is {3}. Please log on to the Approval website and review this item for <strong>completion</strong>. Corrective Action# {0} section {4} is {3}. Please log on to the Approval website and review this item for <strong>completion</strong>.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/CorrectiveAction/Edit?issueID={1} https://messa016ec.infineon.com/CorrectiveAction/Edit?issueID={1}
<br/><br/> <br/><br/>
D3 Due Date: {5} D3 Due Date: {5}
<br/> <br/>

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
{3}# {0} Delegated to you for your approval. Please log on to the Approval website and review this item for Approval or Rejection. {3}# {0} Delegated to you for your approval. Please log on to the Approval website and review this item for Approval or Rejection.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/{3}/Edit?issueID={1} https://messa016ec.infineon.com/{3}/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -5,7 +5,7 @@
<br/><br/> <br/><br/>
Rejection Comment: {5} Rejection Comment: {5}
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
ECN# {1} was Approved. ECN# {1} was Approved.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
Thank you! Thank you!

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
{3}# {0} is ready for your approval. Please log on to the Approval website and review this item for Approval or Rejection. {3}# {0} is ready for your approval. Please log on to the Approval website and review this item for Approval or Rejection.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
{3}# {0} Re-Assigned to you for your approval. Please log on to the Approval website and review this item for Approval or Rejection. {3}# {0} Re-Assigned to you for your approval. Please log on to the Approval website and review this item for Approval or Rejection.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -5,7 +5,7 @@
<br/><br/> <br/><br/>
Comments: {4} Comments: {4}
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -5,7 +5,7 @@
<br/><br/> <br/><br/>
Rejection Comment: {5} Rejection Comment: {5}
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
A new training assignment has been assigned to you for ECN# {1} A new training assignment has been assigned to you for ECN# {1}
<br/><br/> <br/><br/>
Please click here to view: <a href="https://messa016ec.ec.local/Training/ViewMyTrainingAssignment?assignmentID={0}&ECNNumber={1}">Click Here.</a> Please click here to view: <a href="https://messa016ec.infineon.com/Training/ViewMyTrainingAssignment?assignmentID={0}&ECNNumber={1}">Click Here.</a>
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -4,7 +4,7 @@
{3}# {0} has been Approved. The expiration date is {4} {3}# {0} has been Approved. The expiration date is {4}
Please review the approved ETECN form in the attachment. Please review the approved ETECN form in the attachment.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
Lot Disposition# {0} is ready for your approval. Please log on to the Approval website and review this item for Approval or Rejection. Lot Disposition# {0} is ready for your approval. Please log on to the Approval website and review this item for Approval or Rejection.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/LotDisposition/Edit?issueID={1} https://messa016ec.infineon.com/LotDisposition/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
Lot Disposition# {0} Re-Assigned to you for you approval. Please log on to the Approval website and review this item for Approval or Rejection. Lot Disposition# {0} Re-Assigned to you for you approval. Please log on to the Approval website and review this item for Approval or Rejection.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/LotDisposition/Edit?issueID={1} https://messa016ec.infineon.com/LotDisposition/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
Lot Disposition# {0} was rejected by {3}. Please log on to the Approval website and review this item for re-submission. Lot Disposition# {0} was rejected by {3}. Please log on to the Approval website and review this item for re-submission.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/LotDisposition/Edit?issueID={1} https://messa016ec.infineon.com/LotDisposition/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
Lot Traveler for Lot# {3} , Request# {0} has a been created. Please login in to the Fab Approval System to review the change. Lot Traveler for Lot# {3} , Request# {0} has a been created. Please login in to the Fab Approval System to review the change.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/LotTraveler/Edit?issueID={1} https://messa016ec.infineon.com/LotTraveler/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact the site administrator. If you have any questions or trouble logging on please contact the site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
Lot Traveler for Lot# {3} , Request# {0} has a new Revision. Please login in to the Fab Approval System to review the change. Lot Traveler for Lot# {3} , Request# {0} has a new Revision. Please login in to the Fab Approval System to review the change.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/LotTraveler/Edit?issueID={1} https://messa016ec.infineon.com/LotTraveler/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact the site administrator. If you have any questions or trouble logging on please contact the site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
MRB# {0} is ready for your approval. Please log on to the Approval website and review this item for Approval. MRB# {0} is ready for your approval. Please log on to the Approval website and review this item for Approval.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/MRB/Edit?issueID={1} https://messa016ec.infineon.com/MRB/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
{3}# {0} is ready for your approval. Please log on to the Approval website and review this item for Approval or Rejection. {3}# {0} is ready for your approval. Please log on to the Approval website and review this item for Approval or Rejection.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/PartsRequest/Edit?issueID={1} https://messa016ec.infineon.com/PartsRequest/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
{3}# {0} has been completed. {3}# {0} has been completed.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/PartsRequest/Edit?issueID={1} https://messa016ec.infineon.com/PartsRequest/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
{3}# {0} Re-Assigned to you for you approval. Please log on to the Approval website and review this item for Approval or Rejection. {3}# {0} Re-Assigned to you for you approval. Please log on to the Approval website and review this item for Approval or Rejection.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/PartsRequest/Edit?issueID={1} https://messa016ec.infineon.com/PartsRequest/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
{3}# {0} was rejected by {4}. Please log on to the Approval website and review this item for re-submission. {3}# {0} was rejected by {4}. Please log on to the Approval website and review this item for re-submission.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/PartsRequest/Edit?issueID={1} https://messa016ec.infineon.com/PartsRequest/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -4,7 +4,7 @@
{3}# {0} has been automatically Cancelled, because it has been converted to ECN# {5}. The cancellation date is {4} {3}# {0} has been automatically Cancelled, because it has been converted to ECN# {5}. The cancellation date is {4}
Please review the cancelled TECN and the new ECN in the attachments. Please review the cancelled TECN and the new ECN in the attachments.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
{3}# {0} is ready for your Cancellation. Please log on to the Approval website and review this item for Approval of Cancellation. {3}# {0} is ready for your Cancellation. Please log on to the Approval website and review this item for Approval of Cancellation.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -1,10 +1,10 @@
<font size="2" face="verdana"> <font size="2" face="verdana">
*****Please DO NOT reply to this email***** *****Please DO NOT reply to this email*****
<br/><br/> <br/><br/>
{3}# {0} has been Cancelled. The cancellation date is {4} {3}# {0} has been Cancelled. Please remove posted TECN from point of use. The cancellation date is {4}
Please review the cancelled TECN form in the attachment. Please review the cancelled TECN form in the attachment.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
{3}# {0} is ready for your Expiration Approval. Please log on to the Approval website and review this item for Approval of Expiration {3}# {0} is ready for your Expiration Approval. Please log on to the Approval website and review this item for Approval of Expiration
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -4,7 +4,7 @@
{3}# {0} has Expired. The expiration date is {4} {3}# {0} has Expired. The expiration date is {4}
Please review the expired TECN form in the attachment. Please review the expired TECN form in the attachment.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
{4}# {0} Extension was rejected by {3}. Please log on to the Approval website and review this item for re-submission. {4}# {0} Extension was rejected by {3}. Please log on to the Approval website and review this item for re-submission.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/ECN/Edit?issueID={1} https://messa016ec.infineon.com/ECN/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
Work Request# {0} has been Approved. Work Request# {0} has been Approved.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/LotTraveler/Edit?issueID={1} https://messa016ec.infineon.com/LotTraveler/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

View File

@ -3,7 +3,7 @@
<br/><br/> <br/><br/>
Work Request# {0} is ready for your approval. Please log on to the Approval website and review this item for Approval or Rejection. Work Request# {0} is ready for your approval. Please log on to the Approval website and review this item for Approval or Rejection.
<br/><br/> <br/><br/>
https://messa016ec.ec.local/LotTraveler/Edit?issueID={1} https://messa016ec.infineon.com/LotTraveler/Edit?issueID={1}
<br/><br/> <br/><br/>
If you have any questions or trouble logging on please contact a site administrator. If you have any questions or trouble logging on please contact a site administrator.

Some files were not shown because too many files have changed in this diff Show More