Compare commits
36 Commits
f6ced73b9f
...
origin/Pro
Author | SHA1 | Date | |
---|---|---|---|
ab800974b7 | |||
b99b721458 | |||
b1c6903c1c | |||
538b1f817e | |||
89790f4fc1 | |||
9b7e3ef897 | |||
ba8d92ea01 | |||
603052d7e5 | |||
c97ce37238 | |||
10dbd08cd2 | |||
1b7e482ad4 | |||
cbcd3ee53a | |||
fe981c4c04 | |||
3e6fc3fdb3 | |||
1b17cd75c2 | |||
5d701ded55 | |||
0289e62e9f | |||
d6af4b6ef9 | |||
4e04d4666d | |||
88af83cf96 | |||
e8ec36fe3e | |||
4b83a89cb0 | |||
ca651191c8 | |||
ffe6cd7c63 | |||
e1675fe9e9 | |||
a3053eadf6 | |||
7cc645c188 | |||
fbeb8b3cf7 | |||
27728bd0c4 | |||
7330647172 | |||
167db67027 | |||
9c5c938157 | |||
989d0f401e | |||
15c7a15b8e | |||
7e4a17845c | |||
1f96c01a5b |
@ -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
20
.gitignore
vendored
@ -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
41
.vscode/launch.json
vendored
Normal 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
424
.vscode/settings.json
vendored
Normal 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
500
.vscode/tasks.json
vendored
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
380
Fab2ApprovalMKLink/.editorconfig
Normal file
380
Fab2ApprovalMKLink/.editorconfig
Normal 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
|
1
Fab2ApprovalMKLink/.vscode/format-report.json
vendored
Normal file
1
Fab2ApprovalMKLink/.vscode/format-report.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[]
|
33
Fab2ApprovalMKLink/.vscode/launch.json
vendored
Normal file
33
Fab2ApprovalMKLink/.vscode/launch.json
vendored
Normal 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
37
Fab2ApprovalMKLink/.vscode/mklink.md
vendored
Normal 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
424
Fab2ApprovalMKLink/.vscode/settings.json
vendored
Normal 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
109
Fab2ApprovalMKLink/.vscode/tasks.json
vendored
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
51
Fab2ApprovalMKLink/Fab2ApprovalMKLink.csproj
Normal file
51
Fab2ApprovalMKLink/Fab2ApprovalMKLink.csproj
Normal 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>
|
77
Fab2ApprovalMKLink/Program.cs
Normal file
77
Fab2ApprovalMKLink/Program.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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
|
||||||
|
380
Fab2ApprovalSystem/.editorconfig
Normal file
380
Fab2ApprovalSystem/.editorconfig
Normal 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
|
1
Fab2ApprovalSystem/.vscode/format-report.json
vendored
Normal file
1
Fab2ApprovalSystem/.vscode/format-report.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[]
|
30
Fab2ApprovalSystem/.vscode/launch.json
vendored
Normal file
30
Fab2ApprovalSystem/.vscode/launch.json
vendored
Normal 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
424
Fab2ApprovalSystem/.vscode/settings.json
vendored
Normal 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
20
Fab2ApprovalSystem/.vscode/tasks.json
vendored
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
31
Fab2ApprovalSystem/App_Start/.editorconfig
Normal file
31
Fab2ApprovalSystem/App_Start/.editorconfig
Normal 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
|
@ -1,66 +1,58 @@
|
|||||||
using System.Web;
|
using System.Web;
|
||||||
using System.Web.Optimization;
|
using System.Web.Optimization;
|
||||||
|
|
||||||
namespace Fab2ApprovalSystem
|
namespace Fab2ApprovalSystem;
|
||||||
{
|
|
||||||
public class BundleConfig
|
|
||||||
{
|
|
||||||
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
|
|
||||||
public static void RegisterBundles(BundleCollection bundles)
|
|
||||||
{
|
|
||||||
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
|
|
||||||
"~/Scripts/jquery-{version}.js",
|
|
||||||
"~/Scripts/jquery-ui-{version}.js")
|
|
||||||
);
|
|
||||||
|
|
||||||
//bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
|
public class BundleConfig {
|
||||||
// "~/Scripts/jquery.validate*"));
|
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
|
||||||
|
public static void RegisterBundles(BundleCollection bundles) {
|
||||||
|
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
|
||||||
|
"~/Scripts/jquery-{version}.js",
|
||||||
|
"~/Scripts/jquery-ui-{version}.js")
|
||||||
|
);
|
||||||
|
|
||||||
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
|
// bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
|
||||||
"~/Scripts/jquery.unobtrusive*",
|
// "~/Scripts/jquery.validate*"));
|
||||||
"~/Scripts/jquery.validate*"));
|
|
||||||
|
|
||||||
// Use the development version of Modernizr to develop with and learn from. Then, when you're
|
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
|
||||||
// ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
|
"~/Scripts/jquery.unobtrusive*",
|
||||||
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
|
"~/Scripts/jquery.validate*"));
|
||||||
"~/Scripts/modernizr-*"));
|
|
||||||
|
|
||||||
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
|
// Use the development version of Modernizr to develop with and learn from. Then, when you're
|
||||||
"~/Scripts/bootstrap.js",
|
// ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
|
||||||
"~/Scripts/respond.min.js",
|
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
|
||||||
"~/Scripts/common.js"));
|
"~/Scripts/modernizr-*"));
|
||||||
|
|
||||||
|
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
|
||||||
|
"~/Scripts/bootstrap.js",
|
||||||
|
"~/Scripts/respond.min.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"));
|
||||||
|
|
||||||
bundles.Add(new StyleBundle("~/Content/kendo/css").Include(
|
bundles.Add(new StyleBundle("~/Content/kendo/css").Include(
|
||||||
"~/Content/kendo/kendo.common-bootstrap.min.css",
|
"~/Content/kendo/kendo.common-bootstrap.min.css",
|
||||||
"~/Content/kendo/kendo.bootstrap.min.css"));
|
"~/Content/kendo/kendo.bootstrap.min.css"));
|
||||||
|
|
||||||
bundles.Add(new StyleBundle("~/Content/jqw/css").Include(
|
bundles.Add(new StyleBundle("~/Content/jqw/css").Include(
|
||||||
"~/Scripts/jqwidgets/styles/jqx.base.css",
|
"~/Scripts/jqwidgets/styles/jqx.base.css",
|
||||||
"~/Scripts/jqwidgets/styles/jqx.energyblue.css",
|
"~/Scripts/jqwidgets/styles/jqx.energyblue.css",
|
||||||
"~/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(
|
||||||
|
"~/Scripts/jqwidgets/jqxcore.js",
|
||||||
|
"~/Scripts/jqwidgets/jqxdata.js",
|
||||||
|
"~/Scripts/jqwidgets/jqxbuttons.js",
|
||||||
|
"~/Scripts/jqwidgets/jqxscrollbar.js",
|
||||||
|
"~/Scripts/jqwidgets/jqxlistbox.js",
|
||||||
|
"~/Scripts/jqwidgets/jqxpanel.js",
|
||||||
|
"~/Scripts/jqwidgets/jqxtree.js"));
|
||||||
|
|
||||||
bundles.Add(new ScriptBundle("~/Content/jqw/jq").Include(
|
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/bootstrap.min.css",
|
||||||
"~/Scripts/jqwidgets/jqxcore.js",
|
"~/Content/site.css",
|
||||||
"~/Scripts/jqwidgets/jqxdata.js",
|
"~/Content/jquery-ui.css"));
|
||||||
"~/Scripts/jqwidgets/jqxbuttons.js",
|
|
||||||
"~/Scripts/jqwidgets/jqxscrollbar.js",
|
|
||||||
"~/Scripts/jqwidgets/jqxlistbox.js",
|
|
||||||
"~/Scripts/jqwidgets/jqxpanel.js",
|
|
||||||
"~/Scripts/jqwidgets/jqxtree.js"));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/bootstrap.min.css",
|
|
||||||
"~/Content/site.css",
|
|
||||||
"~/Content/jquery-ui.css"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,27 +6,19 @@ 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 static void RegisterRoutes(RouteCollection routes)
|
|
||||||
{
|
|
||||||
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
|
|
||||||
|
|
||||||
routes.MapRoute(
|
public class RouteConfig {
|
||||||
name: "Default",
|
public static void RegisterRoutes(RouteCollection routes) {
|
||||||
url: "{controller}/{action}/{id}",
|
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
|
||||||
// fixing hyperlinks so that the login page will redirect to them
|
|
||||||
// set the default route to the desired landing page, instead of the login page
|
routes.MapRoute(
|
||||||
// otherwise MVC generates the wrong form action url
|
name: "Default",
|
||||||
defaults: new { controller = "Home", action = "MyTasks", id = UrlParameter.Optional }
|
url: "{controller}/{action}/{id}",
|
||||||
);
|
// fixing hyperlinks so that the login page will redirect to them
|
||||||
//routes.MapHttpRoute(
|
// set the default route to the desired landing page, instead of the login page
|
||||||
// name: "ApiRoute",
|
// otherwise MVC generates the wrong form action url
|
||||||
// routeTemplate: "api/{controller}/{id}",
|
defaults: new { controller = "Home", action = "MyTasks", id = UrlParameter.Optional }
|
||||||
// defaults: new { id = RouteParameter.Optional }
|
);
|
||||||
//);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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
|
|
||||||
{
|
|
||||||
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
|
|
||||||
public void ConfigureAuth(IAppBuilder app)
|
|
||||||
{
|
|
||||||
// Enable the application to use a cookie to store information for the signed in user
|
|
||||||
app.UseCookieAuthentication(new CookieAuthenticationOptions
|
|
||||||
{
|
|
||||||
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
|
|
||||||
LoginPath = new PathString("/Account/Login")
|
|
||||||
});
|
|
||||||
// Use a cookie to temporarily store information about a user logging in with a third party login provider
|
|
||||||
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
|
|
||||||
|
|
||||||
// Uncomment the following lines to enable logging in with third party login providers
|
public partial class Startup {
|
||||||
//app.UseMicrosoftAccountAuthentication(
|
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
|
||||||
// clientId: "",
|
public void ConfigureAuth(IAppBuilder app) {
|
||||||
// clientSecret: "");
|
// Enable the application to use a cookie to store information for the signed in user
|
||||||
|
app.UseCookieAuthentication(new CookieAuthenticationOptions {
|
||||||
//app.UseTwitterAuthentication(
|
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
|
||||||
// consumerKey: "",
|
LoginPath = new PathString("/Account/Login")
|
||||||
// consumerSecret: "");
|
});
|
||||||
|
// Use a cookie to temporarily store information about a user logging in with a third party login provider
|
||||||
//app.UseFacebookAuthentication(
|
// app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
|
||||||
// appId: "",
|
|
||||||
// appSecret: "");
|
|
||||||
|
|
||||||
//app.UseGoogleAuthentication();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,21 +1,15 @@
|
|||||||
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 void Register(HttpConfiguration config)
|
|
||||||
{
|
|
||||||
config.MapHttpAttributeRoutes();
|
|
||||||
|
|
||||||
config.Routes.MapHttpRoute(
|
public static class WebApiConfig {
|
||||||
name: "DefaultApi",
|
public static void Register(HttpConfiguration config) {
|
||||||
routeTemplate: "api/{controller}/{id}",
|
config.MapHttpAttributeRoutes();
|
||||||
defaults: new { id = RouteParameter.Optional }
|
|
||||||
);
|
config.Routes.MapHttpRoute(
|
||||||
}
|
name: "DefaultApi",
|
||||||
|
routeTemplate: "api/{controller}/{id}",
|
||||||
|
defaults: new { id = RouteParameter.Optional }
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
31
Fab2ApprovalSystem/Controllers/.editorconfig
Normal file
31
Fab2ApprovalSystem/Controllers/.editorconfig
Normal 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
|
@ -1,532 +1,326 @@
|
|||||||
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]
|
|
||||||
public class AccountController : Controller
|
|
||||||
{
|
|
||||||
public AccountController()
|
|
||||||
: this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
namespace Fab2ApprovalSystem.Controllers;
|
||||||
|
|
||||||
public AccountController(UserManager<ApplicationUser> userManager)
|
[Authorize]
|
||||||
{
|
public class AccountController : Controller {
|
||||||
UserManager = userManager;
|
private string _apiBaseUrl;
|
||||||
}
|
|
||||||
|
|
||||||
public UserManager<ApplicationUser> UserManager { get; private set; }
|
public AccountController()
|
||||||
|
: 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) {
|
||||||
// GET: /Account/Login
|
UserManager = userManager;
|
||||||
[AllowAnonymous]
|
}
|
||||||
// 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 = "*")]
|
|
||||||
public ActionResult Login(string returnUrl)
|
|
||||||
{
|
|
||||||
ViewBag.ReturnUrl = returnUrl;
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost]
|
public UserManager<ApplicationUser> UserManager { get; private set; }
|
||||||
[AllowAnonymous]
|
|
||||||
[ValidateAntiForgeryToken]
|
|
||||||
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();
|
// GET: /Account/Login
|
||||||
bool isLoginValid;
|
[AllowAnonymous]
|
||||||
MembershipProvider domainProvider;
|
// 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 = "*")]
|
||||||
|
public ActionResult Login(string returnUrl) {
|
||||||
|
ViewBag.ReturnUrl = returnUrl;
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
#if(DEBUG)
|
private void SetSessionParameters(LoginResult loginResult, LoginModel user) {
|
||||||
isLoginValid = true;
|
Session["JWT"] = loginResult.AuthTokens.JwtToken;
|
||||||
|
Session["RefreshToken"] = loginResult.AuthTokens.RefreshToken;
|
||||||
|
|
||||||
|
Session[GlobalVars.SESSION_USERID] = user.UserID;
|
||||||
|
Session[GlobalVars.SESSION_USERNAME] = user.FullName;
|
||||||
|
Session[GlobalVars.IS_ADMIN] = user.IsAdmin;
|
||||||
|
Session[GlobalVars.IS_MANAGER] = user.IsManager;
|
||||||
|
Session[GlobalVars.OOO] = user.OOO;
|
||||||
|
Session[GlobalVars.CAN_CREATE_PARTS_REQUEST] = user.IsAdmin || PartsRequestController.CanCreatePartsRequest(user.UserID);
|
||||||
|
|
||||||
|
FormsAuthentication.SetAuthCookie(user.LoginID, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
[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
|
#endif
|
||||||
#if (!DEBUG)
|
#if (!DEBUG)
|
||||||
|
|
||||||
bool isIFX = false;
|
bool isIFX = false;
|
||||||
//domainProvider = Membership.Providers["NA_ADMembershipProvider"];
|
if (GlobalVars.DBConnection.ToUpper() == "TEST" || GlobalVars.DBConnection.ToUpper() == "QUALITY") {
|
||||||
//isLoginValid = domainProvider.ValidateUser(model.LoginID, model.Password);
|
isLoginValid = true;
|
||||||
|
} else {
|
||||||
if (GlobalVars.DBConnection.ToUpper() == "TEST" || GlobalVars.DBConnection.ToUpper() == "QUALITY")
|
isLoginValid = loginResult.IsAuthenticated;
|
||||||
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)
|
if (isLoginValid)
|
||||||
{
|
isIFX = true;
|
||||||
//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
|
#endif
|
||||||
|
|
||||||
LoginModel user = userDMO.GetUser(model.LoginID);
|
if (isLoginValid) {
|
||||||
if (user != null)
|
UserAccountDMO userDMO = new UserAccountDMO();
|
||||||
{
|
LoginModel user = userDMO.GetUser(model.LoginID);
|
||||||
Session[GlobalVars.SESSION_USERID] = user.UserID;
|
if (user != null) {
|
||||||
Session[GlobalVars.SESSION_USERNAME] = user.FullName;
|
SetSessionParameters(loginResult, user);
|
||||||
Session[GlobalVars.IS_ADMIN] = user.IsAdmin;
|
|
||||||
Session[GlobalVars.IS_MANAGER] = user.IsManager;
|
|
||||||
Session[GlobalVars.OOO] = user.OOO;
|
|
||||||
Session[GlobalVars.CAN_CREATE_PARTS_REQUEST] = user.IsAdmin || PartsRequestController.CanCreatePartsRequest(user.UserID);
|
|
||||||
|
|
||||||
FormsAuthentication.SetAuthCookie(user.LoginID, true);
|
|
||||||
return RedirectToLocal(returnUrl);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ModelState.AddModelError("", "The user name does not exist in the DB. Please contact the System Admin");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
return RedirectToLocal(returnUrl);
|
||||||
|
} else {
|
||||||
|
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);
|
||||||
|
EventLogDMO.Add(new WinEventLog() { IssueID = 99999, UserID = @User.Identity.Name, DocumentType = "Login", OperationType = "Error", Comments = "Reject - " + ex.Message });
|
||||||
|
ModelState.AddModelError("", ex.Message);
|
||||||
|
}
|
||||||
|
|
||||||
|
return View(model);
|
||||||
|
// 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
|
||||||
|
|
||||||
|
if (isLoginValid) {
|
||||||
|
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);
|
||||||
|
|
||||||
catch (Exception ex)
|
return new HttpResponseMessage(HttpStatusCode.InternalServerError);
|
||||||
{
|
|
||||||
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 });
|
|
||||||
ModelState.AddModelError("", ex.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
return View(model);
|
|
||||||
// If we got this far, something failed, redisplay form
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
////
|
// GET: /Account/Register
|
||||||
//// POST: /Account/Login
|
[AllowAnonymous]
|
||||||
//[HttpPost]
|
public ActionResult Register() {
|
||||||
//[AllowAnonymous]
|
return View();
|
||||||
//[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
|
// POST: /Account/Disassociate
|
||||||
// return View(model);
|
[HttpPost]
|
||||||
//}
|
[ValidateAntiForgeryToken]
|
||||||
|
public async Task<ActionResult> Disassociate(string loginProvider, string providerKey) {
|
||||||
//
|
ManageMessageId? message = null;
|
||||||
// GET: /Account/Register
|
IdentityResult result = await UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
|
||||||
[AllowAnonymous]
|
if (result.Succeeded) {
|
||||||
public ActionResult Register()
|
message = ManageMessageId.RemoveLoginSuccess;
|
||||||
{
|
} else {
|
||||||
return View();
|
message = ManageMessageId.Error;
|
||||||
}
|
}
|
||||||
|
return RedirectToAction("Manage", new { Message = message });
|
||||||
|
}
|
||||||
|
|
||||||
//
|
// GET: /Account/Manage
|
||||||
// POST: /Account/Register
|
#pragma warning disable IDE0060 // Remove unused parameter
|
||||||
//[HttpPost]
|
public ActionResult Manage(ManageMessageId? message) {
|
||||||
//[AllowAnonymous]
|
return View();
|
||||||
//[ValidateAntiForgeryToken]
|
}
|
||||||
//public async Task<ActionResult> Register(RegisterViewModel model)
|
#pragma warning restore IDE0060 // Remove unused parameter
|
||||||
//{
|
|
||||||
// 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
|
// POST: /Account/ExternalLogin
|
||||||
// return View(model);
|
[HttpPost]
|
||||||
//}
|
[AllowAnonymous]
|
||||||
|
[ValidateAntiForgeryToken]
|
||||||
|
public ActionResult ExternalLogin(string provider, string returnUrl) {
|
||||||
|
// Request a redirect to the external login provider
|
||||||
|
return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }));
|
||||||
|
}
|
||||||
|
|
||||||
//
|
// POST: /Account/LinkLogin
|
||||||
// POST: /Account/Disassociate
|
[HttpPost]
|
||||||
[HttpPost]
|
[ValidateAntiForgeryToken]
|
||||||
[ValidateAntiForgeryToken]
|
public ActionResult LinkLogin(string provider) {
|
||||||
public async Task<ActionResult> Disassociate(string loginProvider, string providerKey)
|
// 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());
|
||||||
ManageMessageId? message = null;
|
}
|
||||||
IdentityResult result = await UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
|
|
||||||
if (result.Succeeded)
|
|
||||||
{
|
|
||||||
message = ManageMessageId.RemoveLoginSuccess;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
message = ManageMessageId.Error;
|
|
||||||
}
|
|
||||||
return RedirectToAction("Manage", new { Message = message });
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
// GET: /Account/LinkLoginCallback
|
||||||
// GET: /Account/Manage
|
public async Task<ActionResult> LinkLoginCallback() {
|
||||||
public ActionResult Manage(ManageMessageId? message)
|
ExternalLoginInfo loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(XsrfKey, User.Identity.GetUserId());
|
||||||
{
|
if (loginInfo == null) {
|
||||||
//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();
|
|
||||||
}
|
|
||||||
|
|
||||||
////
|
|
||||||
//// 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
|
|
||||||
[HttpPost]
|
|
||||||
[AllowAnonymous]
|
|
||||||
[ValidateAntiForgeryToken]
|
|
||||||
public ActionResult ExternalLogin(string provider, string returnUrl)
|
|
||||||
{
|
|
||||||
// Request a redirect to the external login provider
|
|
||||||
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
|
|
||||||
[HttpPost]
|
|
||||||
[ValidateAntiForgeryToken]
|
|
||||||
public ActionResult LinkLogin(string provider)
|
|
||||||
{
|
|
||||||
// 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());
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// GET: /Account/LinkLoginCallback
|
|
||||||
public async Task<ActionResult> LinkLoginCallback()
|
|
||||||
{
|
|
||||||
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(XsrfKey, User.Identity.GetUserId());
|
|
||||||
if (loginInfo == null)
|
|
||||||
{
|
|
||||||
return RedirectToAction("Manage", new { Message = ManageMessageId.Error });
|
|
||||||
}
|
|
||||||
var result = await UserManager.AddLoginAsync(User.Identity.GetUserId(), loginInfo.Login);
|
|
||||||
if (result.Succeeded)
|
|
||||||
{
|
|
||||||
return RedirectToAction("Manage");
|
|
||||||
}
|
|
||||||
return RedirectToAction("Manage", new { Message = ManageMessageId.Error });
|
return RedirectToAction("Manage", new { Message = ManageMessageId.Error });
|
||||||
}
|
}
|
||||||
|
IdentityResult result = await UserManager.AddLoginAsync(User.Identity.GetUserId(), loginInfo.Login);
|
||||||
//
|
if (result.Succeeded) {
|
||||||
// POST: /Account/ExternalLoginConfirmation
|
return RedirectToAction("Manage");
|
||||||
//[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
|
|
||||||
[HttpPost]
|
|
||||||
[ValidateAntiForgeryToken]
|
|
||||||
public ActionResult LogOff()
|
|
||||||
{
|
|
||||||
//AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
|
|
||||||
//AuthenticationManager.SignOut();
|
|
||||||
FormsAuthentication.SignOut();
|
|
||||||
return RedirectToAction("Login", "Account");
|
|
||||||
}
|
}
|
||||||
|
return RedirectToAction("Manage", new { Message = ManageMessageId.Error });
|
||||||
//
|
|
||||||
// GET: /Account/ExternalLoginFailure
|
|
||||||
[AllowAnonymous]
|
|
||||||
public ActionResult ExternalLoginFailure()
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
|
|
||||||
[ChildActionOnly]
|
|
||||||
public ActionResult RemoveAccountList()
|
|
||||||
{
|
|
||||||
var linkedAccounts = UserManager.GetLogins(User.Identity.GetUserId());
|
|
||||||
ViewBag.ShowRemoveButton = HasPassword() || linkedAccounts.Count > 1;
|
|
||||||
return (ActionResult)PartialView("_RemoveAccountPartial", linkedAccounts);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && UserManager != null)
|
|
||||||
{
|
|
||||||
UserManager.Dispose();
|
|
||||||
UserManager = null;
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Helpers
|
|
||||||
// Used for XSRF protection when adding external logins
|
|
||||||
private const string XsrfKey = "XsrfId";
|
|
||||||
|
|
||||||
private IAuthenticationManager AuthenticationManager
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return HttpContext.GetOwinContext().Authentication;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task SignInAsync(ApplicationUser user, bool isPersistent)
|
|
||||||
{
|
|
||||||
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
|
|
||||||
var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
|
|
||||||
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddErrors(IdentityResult result)
|
|
||||||
{
|
|
||||||
foreach (var error in result.Errors)
|
|
||||||
{
|
|
||||||
ModelState.AddModelError("", error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool HasPassword()
|
|
||||||
{
|
|
||||||
var user = UserManager.FindById(User.Identity.GetUserId());
|
|
||||||
if (user != null)
|
|
||||||
{
|
|
||||||
return user.PasswordHash != null;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum ManageMessageId
|
|
||||||
{
|
|
||||||
ChangePasswordSuccess,
|
|
||||||
SetPasswordSuccess,
|
|
||||||
RemoveLoginSuccess,
|
|
||||||
Error
|
|
||||||
}
|
|
||||||
|
|
||||||
private ActionResult RedirectToLocal(string returnUrl)
|
|
||||||
{
|
|
||||||
if (Url.IsLocalUrl(returnUrl))
|
|
||||||
{
|
|
||||||
return Redirect(returnUrl);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
//return RedirectToAction("HierarchicalDataTest", "Home");
|
|
||||||
|
|
||||||
return RedirectToAction("MyTasks", "Home");
|
|
||||||
//return RedirectToAction("Index", "Home", new { tabName = "MyTasks"});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class ChallengeResult : HttpUnauthorizedResult
|
|
||||||
{
|
|
||||||
public ChallengeResult(string provider, string redirectUri) : this(provider, redirectUri, null)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public ChallengeResult(string provider, string redirectUri, string userId)
|
|
||||||
{
|
|
||||||
LoginProvider = provider;
|
|
||||||
RedirectUri = redirectUri;
|
|
||||||
UserId = userId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string LoginProvider { get; set; }
|
|
||||||
public string RedirectUri { get; set; }
|
|
||||||
public string UserId { get; set; }
|
|
||||||
|
|
||||||
public override void ExecuteResult(ControllerContext context)
|
|
||||||
{
|
|
||||||
var properties = new AuthenticationProperties() { RedirectUri = RedirectUri };
|
|
||||||
if (UserId != null)
|
|
||||||
{
|
|
||||||
properties.Dictionary[XsrfKey] = UserId;
|
|
||||||
}
|
|
||||||
context.HttpContext.GetOwinContext().Authentication.Challenge(properties, LoginProvider);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// POST: /Account/LogOff
|
||||||
|
[HttpPost]
|
||||||
|
[ValidateAntiForgeryToken]
|
||||||
|
public ActionResult LogOff() {
|
||||||
|
FormsAuthentication.SignOut();
|
||||||
|
return RedirectToAction("Login", "Account");
|
||||||
|
}
|
||||||
|
|
||||||
|
// GET: /Account/ExternalLoginFailure
|
||||||
|
[AllowAnonymous]
|
||||||
|
public ActionResult ExternalLoginFailure() {
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
[ChildActionOnly]
|
||||||
|
public ActionResult RemoveAccountList() {
|
||||||
|
IList<UserLoginInfo> linkedAccounts = UserManager.GetLogins(User.Identity.GetUserId());
|
||||||
|
ViewBag.ShowRemoveButton = HasPassword() || linkedAccounts.Count > 1;
|
||||||
|
return (ActionResult)PartialView("_RemoveAccountPartial", linkedAccounts);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Dispose(bool disposing) {
|
||||||
|
if (disposing && UserManager != null) {
|
||||||
|
UserManager.Dispose();
|
||||||
|
UserManager = null;
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Helpers
|
||||||
|
// Used for XSRF protection when adding external logins
|
||||||
|
private const string XsrfKey = "XsrfId";
|
||||||
|
|
||||||
|
private IAuthenticationManager AuthenticationManager {
|
||||||
|
get {
|
||||||
|
return HttpContext.GetOwinContext().Authentication;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task SignInAsync(ApplicationUser user, bool isPersistent) {
|
||||||
|
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
|
||||||
|
ClaimsIdentity identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
|
||||||
|
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddErrors(IdentityResult result) {
|
||||||
|
foreach (string error in result.Errors) {
|
||||||
|
ModelState.AddModelError("", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool HasPassword() {
|
||||||
|
ApplicationUser user = UserManager.FindById(User.Identity.GetUserId());
|
||||||
|
if (user != null) {
|
||||||
|
return user.PasswordHash != null;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ManageMessageId {
|
||||||
|
ChangePasswordSuccess,
|
||||||
|
SetPasswordSuccess,
|
||||||
|
RemoveLoginSuccess,
|
||||||
|
Error
|
||||||
|
}
|
||||||
|
|
||||||
|
private ActionResult RedirectToLocal(string returnUrl) {
|
||||||
|
if (Url.IsLocalUrl(returnUrl)) {
|
||||||
|
return Redirect(returnUrl);
|
||||||
|
} else {
|
||||||
|
return RedirectToAction("MyTasks", "Home");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ChallengeResult : HttpUnauthorizedResult {
|
||||||
|
public ChallengeResult(string provider, string redirectUri) : this(provider, redirectUri, null) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChallengeResult(string provider, string redirectUri, string userId) {
|
||||||
|
LoginProvider = provider;
|
||||||
|
RedirectUri = redirectUri;
|
||||||
|
UserId = userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string LoginProvider { get; set; }
|
||||||
|
public string RedirectUri { get; set; }
|
||||||
|
public string UserId { get; set; }
|
||||||
|
|
||||||
|
public override void ExecuteResult(ControllerContext context) {
|
||||||
|
AuthenticationProperties properties = new AuthenticationProperties() { RedirectUri = RedirectUri };
|
||||||
|
if (UserId != null) {
|
||||||
|
properties.Dictionary[XsrfKey] = UserId;
|
||||||
|
}
|
||||||
|
context.HttpContext.GetOwinContext().Authentication.Challenge(properties, LoginProvider);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -1,669 +1,300 @@
|
|||||||
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]
|
||||||
CorrectiveActionDMO caDMO = new CorrectiveActionDMO();
|
public class AuditController : Controller {
|
||||||
UserUtilities adUsers = new UserUtilities();
|
|
||||||
// GET: Audit
|
AuditDMO auditDMO = new AuditDMO(GlobalVars.AppSettings);
|
||||||
public ActionResult Index()
|
CorrectiveActionDMO caDMO = new CorrectiveActionDMO();
|
||||||
{
|
private readonly AppSettings _AppSettings = GlobalVars.AppSettings;
|
||||||
return View();
|
|
||||||
|
// GET: Audit
|
||||||
|
public ActionResult Index() {
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionResult Create() {
|
||||||
|
Audit audit = new Audit();
|
||||||
|
try {
|
||||||
|
// TODO: Add insert logic here
|
||||||
|
|
||||||
|
audit.OriginatorID = (int)Session[GlobalVars.SESSION_USERID];
|
||||||
|
auditDMO.InsertAudit(audit);
|
||||||
|
return RedirectToAction("Edit", new { issueID = audit.AuditNo });
|
||||||
|
} catch (Exception e) {
|
||||||
|
string detailedException = "";
|
||||||
|
try {
|
||||||
|
detailedException = e.InnerException.ToString();
|
||||||
|
} catch {
|
||||||
|
detailedException = e.Message;
|
||||||
|
}
|
||||||
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + audit.AuditNo.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
||||||
|
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 });
|
||||||
|
throw new Exception(e.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionResult Edit(int issueID) {
|
||||||
|
int isITARCompliant = 1;
|
||||||
|
Audit audit = new Audit();
|
||||||
|
|
||||||
|
try {
|
||||||
|
bool isAdmin = (bool)Session[GlobalVars.IS_ADMIN];
|
||||||
|
int userId = (int)Session[GlobalVars.SESSION_USERID];
|
||||||
|
AuditEdit auditEdit = auditDMO.GetAuditEdit(issueID, audit, isAdmin, userId);
|
||||||
|
if (auditEdit.RedirectToAction)
|
||||||
|
return RedirectToAction("ReadOnlyAudit", new { auditNo = audit.AuditNo });
|
||||||
|
ViewBag.AuditAreaList = auditEdit.AuditAreaList;
|
||||||
|
ViewBag.AuditeeNames = auditEdit.AuditeeNames;
|
||||||
|
ViewBag.AuditFindingCategoryList = auditEdit.AuditFindingCategoryList;
|
||||||
|
ViewBag.AuditorList = auditEdit.AuditorList;
|
||||||
|
ViewBag.AuditTypeList = auditEdit.AuditTypeList;
|
||||||
|
ViewBag.CANoList = auditEdit.CANoList;
|
||||||
|
ViewBag.Is8DQA = auditEdit.Is8DQA;
|
||||||
|
ViewBag.IsAdmin = auditEdit.IsAdmin;
|
||||||
|
ViewBag.IsSubmitter = auditEdit.IsSubmitter;
|
||||||
|
ViewBag.MesaUsers = auditEdit.MesaUsers;
|
||||||
|
ViewBag.UserList = auditEdit.UserList;
|
||||||
|
} catch (Exception e) {
|
||||||
|
string detailedException = "";
|
||||||
|
try {
|
||||||
|
detailedException = e.InnerException.ToString();
|
||||||
|
} catch {
|
||||||
|
detailedException = e.Message;
|
||||||
|
}
|
||||||
|
string exceptionString = e.Message.ToString().Trim().Length > 500 ? "Issue=" + audit.AuditNo.ToString() + e.Message.ToString().Substring(0, 250) : e.Message.ToString();
|
||||||
|
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 });
|
||||||
|
throw new Exception(e.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
return View(audit);
|
||||||
///
|
}
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public ActionResult Create()
|
|
||||||
{
|
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
Audit audit = new Audit();
|
public ActionResult Edit(Audit model) {
|
||||||
try
|
try {
|
||||||
{
|
var data = model;
|
||||||
// TODO: Add insert logic here
|
auditDMO.UpdateAudit(model, (int)Session[GlobalVars.SESSION_USERID]);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
return Content(ex.Message);
|
||||||
audit.OriginatorID = (int)Session[GlobalVars.SESSION_USERID];
|
|
||||||
auditDMO.InsertAudit(audit);
|
|
||||||
return RedirectToAction("Edit", new { issueID = audit.AuditNo });
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
string detailedException = "";
|
|
||||||
try
|
|
||||||
{
|
|
||||||
detailedException = e.InnerException.ToString();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
detailedException = e.Message;
|
|
||||||
}
|
|
||||||
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);
|
|
||||||
EventLogDMO.Add(new WinEventLog() { IssueID = audit.AuditNo, UserID = @User.Identity.Name, DocumentType = "Audit", OperationType = "Error", Comments = "SubmitDocument - " + exceptionString });
|
|
||||||
throw new Exception(e.Message);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return Content("Successfully Saved");
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
public ActionResult CheckCAStatus(int auditNo) {
|
||||||
///
|
int dataCount = -1;
|
||||||
/// </summary>
|
try {
|
||||||
/// <param name="issueID"></param>
|
dataCount = auditDMO.GetOpenCACountByAuditNo(auditNo);
|
||||||
/// <returns></returns>
|
} catch (Exception ex) {
|
||||||
public ActionResult Edit(int issueID)
|
throw;
|
||||||
{
|
|
||||||
int isITARCompliant = 1;
|
|
||||||
Audit audit = new Audit();
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
List<int> userList = auditDMO.Get8DQA();
|
|
||||||
ViewBag.MesaUsers = adUsers.GetMesaUsers();
|
|
||||||
int QAs = userList.Find(delegate(int al) { return al == (int)Session[GlobalVars.SESSION_USERID]; });
|
|
||||||
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 });
|
|
||||||
}
|
|
||||||
if (ViewBag.IsAdmin == false && ViewBag.IsSubmitter == false)
|
|
||||||
{
|
|
||||||
return RedirectToAction("ReadOnlyAudit", new { auditNo = audit.AuditNo });
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ViewBag.UserList = auditDMO.GetUserList();
|
|
||||||
ViewBag.AuditTypeList = auditDMO.GetAuditTypeList();
|
|
||||||
//ViewBag.AuditStandardList = auditDMO.GetAuditStandardList();
|
|
||||||
ViewBag.AuditorList = auditDMO.GetAuditorList();
|
|
||||||
ViewBag.AuditAreaList = auditDMO.GetAuditAreaList();
|
|
||||||
ViewBag.AuditFindingCategoryList = auditDMO.GetAuditFindingCategories();
|
|
||||||
ViewBag.CANoList = auditDMO.GetCorrectiveActionNoList();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
string detailedException = "";
|
|
||||||
try
|
|
||||||
{
|
|
||||||
detailedException = e.InnerException.ToString();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
detailedException = e.Message;
|
|
||||||
}
|
|
||||||
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);
|
|
||||||
EventLogDMO.Add(new WinEventLog() { IssueID = audit.AuditNo, UserID = @User.Identity.Name, DocumentType = "Audit", OperationType = "Error", Comments = "Edit - " + exceptionString });
|
|
||||||
throw new Exception(e.Message);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return View(audit);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
return Content(dataCount.ToString());
|
||||||
///
|
}
|
||||||
/// </summary>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
public ActionResult Edit(Audit model)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
|
|
||||||
var data = model;
|
public ActionResult ReadOnlyAudit(int auditNo) {
|
||||||
auditDMO.UpdateAudit(model, (int)Session[GlobalVars.SESSION_USERID]);
|
Audit audit = new Audit();
|
||||||
}
|
audit = auditDMO.GetAuditItemReadOnly(auditNo, (int)Session[GlobalVars.SESSION_USERID]);
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return Content(ex.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Content("Successfully Saved");
|
ViewBag.AuditTypeList = auditDMO.GetAuditTypeList();
|
||||||
}
|
ViewBag.AuditorList = auditDMO.GetAuditorList();
|
||||||
|
ViewBag.AuditAreaList = auditDMO.GetAuditAreaList();
|
||||||
|
ViewBag.AuditFindingCategoryList = auditDMO.GetAuditFindingCategories();
|
||||||
|
|
||||||
/// <summary>
|
return View(audit);
|
||||||
///
|
}
|
||||||
/// </summary>
|
|
||||||
/// <param name="auditNo"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public ActionResult CheckCAStatus(int auditNo)
|
|
||||||
{
|
|
||||||
int dataCount = -1;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
dataCount = auditDMO.GetOpenCACountByAuditNo(auditNo);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Content(dataCount.ToString());
|
public ActionResult AuditReportAttachSave(IEnumerable<HttpPostedFileBase> AuditReportFiles, int auditNo) {
|
||||||
|
try {
|
||||||
}
|
// The Name of the Upload component is "files"
|
||||||
|
if (AuditReportFiles != null) {
|
||||||
/// <summary>
|
int userId = (int)Session[GlobalVars.SESSION_USERID];
|
||||||
///
|
foreach (var file in AuditReportFiles) {
|
||||||
/// </summary>
|
AuditHelper.AuditReportAttachSave(_AppSettings, auditDMO, auditNo, userId, file.FileName, file.InputStream);
|
||||||
/// <param name="auditNo"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public ActionResult ReadOnlyAudit(int auditNo)
|
|
||||||
{
|
|
||||||
Audit audit = new Audit();
|
|
||||||
audit = auditDMO.GetAuditItemReadOnly(auditNo, (int)Session[GlobalVars.SESSION_USERID]);
|
|
||||||
|
|
||||||
ViewBag.AuditTypeList = auditDMO.GetAuditTypeList();
|
|
||||||
ViewBag.AuditorList = auditDMO.GetAuditorList();
|
|
||||||
ViewBag.AuditAreaList = auditDMO.GetAuditAreaList();
|
|
||||||
ViewBag.AuditFindingCategoryList = auditDMO.GetAuditFindingCategories();
|
|
||||||
|
|
||||||
|
|
||||||
return View(audit);
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <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"
|
|
||||||
if (AuditReportFiles != null)
|
|
||||||
{
|
|
||||||
foreach (var file in AuditReportFiles)
|
|
||||||
{
|
|
||||||
// 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("");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
return Content("");
|
||||||
///
|
}
|
||||||
/// </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));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public ActionResult AuditReportAttachment_Read([DataSourceRequest] DataSourceRequest request, int auditNo) {
|
||||||
|
|
||||||
/// <summary>
|
return Json(auditDMO.GetAuditReportAttachments(auditNo).ToDataSourceResult(request));
|
||||||
///
|
}
|
||||||
/// </summary>
|
|
||||||
/// <param name="attachID"></param>
|
|
||||||
[HttpPost]
|
|
||||||
public void DeleteAuditReportAttachment(int attachID)
|
|
||||||
{
|
|
||||||
auditDMO.DeleteAuditReportAttachment(attachID);
|
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
}
|
public void DeleteAuditReportAttachment(int attachID) {
|
||||||
/// <summary>
|
auditDMO.DeleteAuditReportAttachment(attachID);
|
||||||
///
|
}
|
||||||
/// </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))
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
//throw new Exception("File not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
return File(sDocument, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
catch
|
if (!System.IO.File.Exists(sDocument)) {
|
||||||
{
|
return null;
|
||||||
// TODO - proces the error
|
|
||||||
throw;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return File(sDocument, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
|
||||||
|
} catch {
|
||||||
|
// TODO - proces the error
|
||||||
|
throw;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionResult GetAuditFindingsList([DataSourceRequest] DataSourceRequest request, int auditNo) {
|
||||||
|
return Json(auditDMO.GetAuditFindingsList(auditNo).ToDataSourceResult(request));
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
public ActionResult InsertAuditFindingsItem(AuditFindings data) {
|
||||||
///
|
if ((data.FindingType == "Major" || data.FindingType == "Minor") && data.CANo == 0) {
|
||||||
/// </summary>
|
throw new ArgumentException("You must select add a CA for a Major or Minor finding.");
|
||||||
/// <param name="request"></param>
|
} else {
|
||||||
/// <param name="auditNo"></param>
|
int userId = (int)Session[GlobalVars.SESSION_USERID];
|
||||||
/// <returns></returns>
|
Audit audit = auditDMO.InsertAndGetAudit(caDMO, data, userId);
|
||||||
public ActionResult GetAuditFindingsList([DataSourceRequest] DataSourceRequest request, int auditNo)
|
|
||||||
{
|
|
||||||
|
|
||||||
return Json(auditDMO.GetAuditFindingsList(auditNo).ToDataSourceResult(request));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </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.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </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.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public ActionResult DeleteAuditFindingsItem(int auditFindingsID)
|
|
||||||
{
|
|
||||||
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>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="issueID"></param>
|
|
||||||
public void ReleaseLockOnDocument(int issueID)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
auditDMO.ReleaseLockOnDocument((int)Session[GlobalVars.SESSION_USERID], issueID);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
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);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// CA Findings ======================================================================================================================
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="data"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public ActionResult InsertCAFindingsItem(CAFindings data)
|
|
||||||
{
|
|
||||||
auditDMO.InsertCAFindings(data);
|
|
||||||
if (data.ResponsibilityOwnerID != null)
|
|
||||||
{
|
|
||||||
// send an email notification
|
|
||||||
NotifyActionItemOwner(data.AuditNo, data.ECD, data.ResponsibilityOwnerID);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Content("");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="data"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public ActionResult UpdateCAFindingsItem(CAFindings data)
|
|
||||||
{
|
|
||||||
auditDMO.UpdateCAFindings(data);
|
|
||||||
if (data.ResponsibilityOwnerID != data.CurrentResponsibilityOwnerID)
|
|
||||||
{
|
|
||||||
NotifyActionItemOwner(data.AuditNo, data.ECD, data.ResponsibilityOwnerID);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Content("");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </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));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </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));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="d7paID"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public ActionResult GetCAFindingsItem(int caFindingsID)
|
|
||||||
{
|
|
||||||
var model = new CAFindings();
|
|
||||||
model = auditDMO.GetCAFindingsItem(caFindingsID);
|
|
||||||
|
|
||||||
return PartialView("_CAFindingsAttachment", model);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="caFindingsID"></param>
|
|
||||||
[HttpPost]
|
|
||||||
public void DeleteCAFindingsItem(int caFindingsID)
|
|
||||||
{
|
|
||||||
auditDMO.DeleteCAFindingsItem(caFindingsID);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </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"
|
|
||||||
if (CAFindings_Attachemnt != null)
|
|
||||||
{
|
|
||||||
foreach (var file in CAFindings_Attachemnt)
|
|
||||||
{
|
|
||||||
// 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
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return Content("");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </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 });
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
string detailedException = "";
|
|
||||||
try
|
|
||||||
{
|
|
||||||
detailedException = e.InnerException.ToString();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
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();
|
|
||||||
Functions.WriteEvent(@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 });
|
|
||||||
//throw e;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
public ActionResult IsCAAssignedToAudit(int caNo, int auditNo)
|
|
||||||
{
|
|
||||||
return Content(auditDMO.IsCAAssignedToAudit(caNo, auditNo).ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
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.");
|
||||||
|
} else {
|
||||||
|
int userId = (int)Session[GlobalVars.SESSION_USERID];
|
||||||
|
Audit audit = auditDMO.UpdateAndGetAudit(caDMO, data, userId);
|
||||||
|
|
||||||
|
return Json(audit, JsonRequestBehavior.AllowGet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionResult DeleteAuditFindingsItem(int auditFindingsID) {
|
||||||
|
int userId = (int)Session[GlobalVars.SESSION_USERID];
|
||||||
|
Audit audit = auditDMO.DeleteAndGetAudit(auditFindingsID, userId);
|
||||||
|
return Json(audit, JsonRequestBehavior.AllowGet);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ReleaseLockOnDocument(int issueID) {
|
||||||
|
try {
|
||||||
|
auditDMO.ReleaseLockOnDocument((int)Session[GlobalVars.SESSION_USERID], issueID);
|
||||||
|
} 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);
|
||||||
|
} catch { }
|
||||||
|
auditDMO.ReleaseLockOnDocument(-1, issueID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CA Findings ======================================================================================================================
|
||||||
|
|
||||||
|
public ActionResult InsertCAFindingsItem(CAFindings data) {
|
||||||
|
auditDMO.InsertCAFindings(data);
|
||||||
|
if (data.ResponsibilityOwnerID != null) {
|
||||||
|
// send an email notification
|
||||||
|
NotifyActionItemOwner(data.AuditNo, data.ECD, data.ResponsibilityOwnerID);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Content("");
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionResult UpdateCAFindingsItem(CAFindings data) {
|
||||||
|
auditDMO.UpdateCAFindings(data);
|
||||||
|
if (data.ResponsibilityOwnerID != data.CurrentResponsibilityOwnerID) {
|
||||||
|
NotifyActionItemOwner(data.AuditNo, data.ECD, data.ResponsibilityOwnerID);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Content("");
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionResult GetCAFindingsList([DataSourceRequest] DataSourceRequest request, int auditNo) {
|
||||||
|
return Json(auditDMO.GetCAFindingsList(auditNo).ToDataSourceResult(request));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionResult GetCAFindingsItemAttachments([DataSourceRequest] DataSourceRequest request, int caFindingsID) {
|
||||||
|
return Json(auditDMO.GetCAFindingsItemAttachments(caFindingsID).ToDataSourceResult(request));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionResult GetCAFindingsItem(int caFindingsID) {
|
||||||
|
var model = new CAFindings();
|
||||||
|
model = auditDMO.GetCAFindingsItem(caFindingsID);
|
||||||
|
|
||||||
|
return PartialView("_CAFindingsAttachment", model);
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public void DeleteCAFindingsItem(int caFindingsID) {
|
||||||
|
auditDMO.DeleteCAFindingsItem(caFindingsID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionResult SaveCAFindings_Attachemnt(IEnumerable<HttpPostedFileBase> CAFindings_Attachemnt, int caFindingsID, int auditNo) {
|
||||||
|
try {
|
||||||
|
// The Name of the Upload component is "files"
|
||||||
|
if (CAFindings_Attachemnt != null) {
|
||||||
|
int userId = (int)Session[GlobalVars.SESSION_USERID];
|
||||||
|
foreach (var file in CAFindings_Attachemnt) {
|
||||||
|
AuditHelper.SaveAndInsert(_AppSettings, auditDMO, caFindingsID, auditNo, userId, file.FileName, file.InputStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Content("");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void NotifyActionItemOwner(int issueID, DateTime? dueDate, int? responsibleOwnerID) {
|
||||||
|
try {
|
||||||
|
string email = auditDMO.NotifyActionItemOwner(issueID, dueDate, responsibleOwnerID, _AppSettings.EmailTemplatesPath);
|
||||||
|
|
||||||
|
try {
|
||||||
|
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 (Exception e) {
|
||||||
|
string detailedException = "";
|
||||||
|
try {
|
||||||
|
detailedException = e.InnerException.ToString();
|
||||||
|
} catch {
|
||||||
|
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();
|
||||||
|
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 });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionResult IsCAAssignedToAudit(int caNo, int auditNo) {
|
||||||
|
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
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
File diff suppressed because it is too large
Load Diff
@ -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
|
namespace Fab2ApprovalSystem.Controllers;
|
||||||
{
|
|
||||||
[Authorize]
|
|
||||||
[SessionExpireFilter]
|
|
||||||
public class ManagerController : Controller
|
|
||||||
{
|
|
||||||
UserAccountDMO userDMO = new UserAccountDMO();
|
|
||||||
AdminDMO adminDMO = new AdminDMO();
|
|
||||||
TrainingDMO trainingDMO = new TrainingDMO();
|
|
||||||
LotDispositionDMO ldDMO = new LotDispositionDMO();
|
|
||||||
|
|
||||||
/// <summary>
|
[Authorize]
|
||||||
///
|
[SessionExpireFilter]
|
||||||
/// </summary>
|
public class ManagerController : Controller {
|
||||||
/// <returns></returns>
|
|
||||||
public ActionResult Index()
|
|
||||||
{
|
|
||||||
|
|
||||||
if ((bool)Session[GlobalVars.IS_MANAGER])
|
UserAccountDMO userDMO = new UserAccountDMO();
|
||||||
{
|
AdminDMO adminDMO = new AdminDMO();
|
||||||
var model = userDMO.GetAllUsers();
|
TrainingDMO trainingDMO = new TrainingDMO();
|
||||||
ViewBag.AllActiveUsers = userDMO.GetAllActiveUsers();
|
LotDispositionDMO ldDMO = new LotDispositionDMO();
|
||||||
return View(model);
|
private readonly AppSettings _AppSettings = GlobalVars.AppSettings;
|
||||||
}
|
|
||||||
else
|
public ActionResult Index() {
|
||||||
return Content("Not Autthorized");
|
if ((bool)Session[GlobalVars.IS_MANAGER]) {
|
||||||
}
|
var model = userDMO.GetAllUsers();
|
||||||
|
ViewBag.AllActiveUsers = userDMO.GetAllActiveUsers();
|
||||||
|
return View(model);
|
||||||
|
} else
|
||||||
|
return Content("Not Autthorized");
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
@ -6,216 +6,192 @@ 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]
|
|
||||||
[SessionExpireFilter]
|
|
||||||
public class ReportsController : Controller
|
|
||||||
{
|
|
||||||
public const String specialNullString = "~NULL~";
|
|
||||||
|
|
||||||
// GET: Export
|
[Authorize]
|
||||||
public ActionResult Index()
|
[SessionExpireFilter]
|
||||||
{
|
public class ReportsController : Controller {
|
||||||
UserAccountDMO userDMO = new UserAccountDMO();
|
|
||||||
ViewBag.HasITARAccess = userDMO.GetITARAccess((int)Session[GlobalVars.SESSION_USERID]);
|
|
||||||
|
|
||||||
return View();
|
public const String specialNullString = "~NULL~";
|
||||||
}
|
private readonly AppSettings _AppSettings = GlobalVars.AppSettings;
|
||||||
|
|
||||||
public ActionResult Report(String id, String docType = "")
|
// GET: Export
|
||||||
{
|
public ActionResult Index() {
|
||||||
if (String.IsNullOrEmpty(id))
|
UserAccountDMO userDMO = new UserAccountDMO();
|
||||||
return RedirectToAction("Index");
|
ViewBag.HasITARAccess = userDMO.GetITARAccess((int)Session[GlobalVars.SESSION_USERID]);
|
||||||
|
|
||||||
UserAccountDMO userDMO = new UserAccountDMO();
|
return View();
|
||||||
if (!userDMO.GetITARAccess((int)Session[GlobalVars.SESSION_USERID]))
|
}
|
||||||
return View("UnAuthorizedAccess");
|
|
||||||
|
|
||||||
var m = new ReportViewModel();
|
public ActionResult Report(String id, String docType = "") {
|
||||||
var reports = GetReportList(docType);
|
if (String.IsNullOrEmpty(id))
|
||||||
foreach (var report in reports)
|
return RedirectToAction("Index");
|
||||||
{
|
|
||||||
if (String.Equals(report.ReportID, id, StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
|
||||||
m.ReportID = report.ReportID;
|
|
||||||
m.ReportName = report.Name;
|
|
||||||
m.Description = report.Description;
|
|
||||||
m.DocType = docType;
|
|
||||||
|
|
||||||
var c = SetupSSRSHelperClient();
|
UserAccountDMO userDMO = new UserAccountDMO();
|
||||||
|
if (!userDMO.GetITARAccess((int)Session[GlobalVars.SESSION_USERID]))
|
||||||
|
return View("UnAuthorizedAccess");
|
||||||
|
|
||||||
m.Parameters = c.GetReportParameters(report.FullPath).Select(parm =>
|
var m = new ReportViewModel<System.Web.Mvc.SelectListItem>();
|
||||||
{
|
var reports = GetReportList(docType);
|
||||||
var r = new ReportParameterViewModel();
|
foreach (var report in reports) {
|
||||||
r.Visible = (parm.PromptUser.HasValue == false || parm.PromptUser == true) && !String.IsNullOrEmpty(parm.Prompt);
|
if (String.Equals(report.ReportID, id, StringComparison.OrdinalIgnoreCase)) {
|
||||||
r.Prompt = parm.Prompt;
|
m.ReportID = report.ReportID;
|
||||||
r.Name = parm.Name;
|
m.ReportName = report.Name;
|
||||||
r.HtmlID = "parm_" + parm.Name;
|
m.Description = report.Description;
|
||||||
|
m.DocType = docType;
|
||||||
|
|
||||||
if (parm.MultiValue.HasValue && parm.MultiValue.Value)
|
var c = SetupSSRSHelperClient();
|
||||||
r.ControlType = ParameterControlTypes.Multiselect;
|
|
||||||
else if ((parm.ValidValues != null) && (parm.ValidValues.Length > 0))
|
|
||||||
r.ControlType = ParameterControlTypes.Dropdown;
|
|
||||||
else if (parm.DataType.Equals("DateTime", StringComparison.OrdinalIgnoreCase))
|
|
||||||
r.ControlType = ParameterControlTypes.DatePicker;
|
|
||||||
else
|
|
||||||
r.ControlType = ParameterControlTypes.Textbox;
|
|
||||||
|
|
||||||
r.SelectList = null;
|
m.Parameters = c.GetReportParameters(report.FullPath).Select(parm => {
|
||||||
if (parm.ValidValues != null)
|
var r = new ReportParameterViewModel<System.Web.Mvc.SelectListItem>();
|
||||||
{
|
r.Visible = (parm.PromptUser.HasValue == false || parm.PromptUser == true) && !String.IsNullOrEmpty(parm.Prompt);
|
||||||
r.SelectList = parm.ValidValues.Select(vv => {
|
r.Prompt = parm.Prompt;
|
||||||
return new SelectListItem()
|
r.Name = parm.Name;
|
||||||
{
|
r.HtmlID = "parm_" + parm.Name;
|
||||||
Text = vv.Value,
|
|
||||||
Value = (vv.Key == null ? specialNullString : vv.Key),
|
|
||||||
Selected = (parm.DefaultValues != null && parm.DefaultValues.Contains(vv.Key))
|
|
||||||
};
|
|
||||||
}).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
r.DefaultValue = "";
|
if (parm.MultiValue.HasValue && parm.MultiValue.Value)
|
||||||
if (parm.DefaultValues != null && parm.DefaultValues.Length > 0)
|
r.ControlType = ParameterControlTypes.Multiselect;
|
||||||
r.DefaultValue = parm.DefaultValues[0];
|
else if ((parm.ValidValues != null) && (parm.ValidValues.Length > 0))
|
||||||
|
r.ControlType = ParameterControlTypes.Dropdown;
|
||||||
|
else if (parm.DataType.Equals("DateTime", StringComparison.OrdinalIgnoreCase))
|
||||||
|
r.ControlType = ParameterControlTypes.DatePicker;
|
||||||
|
else
|
||||||
|
r.ControlType = ParameterControlTypes.Textbox;
|
||||||
|
|
||||||
return r;
|
r.SelectList = null;
|
||||||
|
if (parm.ValidValues != null) {
|
||||||
|
r.SelectList = parm.ValidValues.Select(vv => {
|
||||||
|
return new SelectListItem() {
|
||||||
|
Text = vv.Value,
|
||||||
|
Value = (vv.Key == null ? specialNullString : vv.Key),
|
||||||
|
Selected = (parm.DefaultValues != null && parm.DefaultValues.Contains(vv.Key))
|
||||||
|
};
|
||||||
|
}).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
}).ToArray();
|
r.DefaultValue = "";
|
||||||
}
|
if (parm.DefaultValues != null && parm.DefaultValues.Length > 0)
|
||||||
|
r.DefaultValue = parm.DefaultValues[0];
|
||||||
|
|
||||||
|
return r;
|
||||||
|
|
||||||
|
}).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
return View(m);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SSRSHelper.SSRSClient SetupSSRSHelperClient()
|
return View(m);
|
||||||
{
|
}
|
||||||
var useCfgForBindings = false;
|
|
||||||
if (String.Equals(System.Configuration.ConfigurationManager.AppSettings["SSRSBindingsByConfiguration"], "true", StringComparison.OrdinalIgnoreCase))
|
|
||||||
useCfgForBindings = true;
|
|
||||||
|
|
||||||
var c = new SSRSHelper.SSRSClient(
|
public SSRSHelper.SSRSClient SetupSSRSHelperClient() {
|
||||||
Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SSRSBaseURL"]),
|
var useCfgForBindings = false;
|
||||||
Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SSRSDomain"]),
|
if (String.Equals(_AppSettings.SSRSBindingsByConfiguration, "true", StringComparison.OrdinalIgnoreCase))
|
||||||
Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SSRSUsername"]),
|
useCfgForBindings = true;
|
||||||
Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SSRSPassword"]),
|
|
||||||
useCfgForBindings);
|
|
||||||
c.Initialize();
|
|
||||||
|
|
||||||
return c;
|
var c = new SSRSHelper.SSRSClient(
|
||||||
}
|
Convert.ToString(_AppSettings.SSRSBaseURL),
|
||||||
|
Convert.ToString(_AppSettings.SSRSDomain),
|
||||||
|
Convert.ToString(_AppSettings.SSRSUsername),
|
||||||
|
Convert.ToString(_AppSettings.SSRSPassword),
|
||||||
|
useCfgForBindings);
|
||||||
|
c.Initialize();
|
||||||
|
|
||||||
private IEnumerable<SSRSHelper.ReportInfo> GetReportList(String docType)
|
return c;
|
||||||
{
|
}
|
||||||
String folderName = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SSRSFolder"]);
|
|
||||||
if (folderName.EndsWith("/"))
|
|
||||||
folderName = folderName.TrimEnd('/');
|
|
||||||
if (!String.IsNullOrWhiteSpace(docType))
|
|
||||||
folderName = folderName + "/" + docType;
|
|
||||||
|
|
||||||
var c = SetupSSRSHelperClient();
|
private IEnumerable<SSRSHelper.ReportInfo> GetReportList(String docType) {
|
||||||
return c.ListReports(folderName);
|
String folderName = Convert.ToString(_AppSettings.SSRSFolder);
|
||||||
}
|
if (folderName.EndsWith("/"))
|
||||||
|
folderName = folderName.TrimEnd('/');
|
||||||
|
if (!String.IsNullOrWhiteSpace(docType))
|
||||||
|
folderName = folderName + "/" + docType;
|
||||||
|
|
||||||
public ActionResult GetReports(String docType)
|
var c = SetupSSRSHelperClient();
|
||||||
{
|
return c.ListReports(folderName);
|
||||||
var reports = GetReportList(docType);
|
}
|
||||||
|
|
||||||
return Json(new { Data =
|
public ActionResult GetReports(String docType) {
|
||||||
reports.Select(r => new ReportViewModel()
|
var reports = GetReportList(docType);
|
||||||
{
|
|
||||||
ReportName = r.Name ?? "",
|
|
||||||
Description = r.Description ?? "",
|
|
||||||
ReportID = r.ReportID ?? "",
|
|
||||||
DocType = docType
|
|
||||||
})
|
|
||||||
},
|
|
||||||
JsonRequestBehavior.AllowGet);
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost]
|
return Json(new {
|
||||||
public ActionResult ExportReport(String DocType, String ReportID)
|
Data =
|
||||||
{
|
reports.Select(r => new ReportViewModel<System.Web.Mvc.SelectListItem>() {
|
||||||
var c = SetupSSRSHelperClient();
|
ReportName = r.Name ?? "",
|
||||||
var reports = GetReportList(DocType);
|
Description = r.Description ?? "",
|
||||||
|
ReportID = r.ReportID ?? "",
|
||||||
|
DocType = docType
|
||||||
|
})
|
||||||
|
},
|
||||||
|
JsonRequestBehavior.AllowGet);
|
||||||
|
}
|
||||||
|
|
||||||
var report = reports.Where(r => String.Equals(r.ReportID, ReportID, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
|
[HttpPost]
|
||||||
if (report == null)
|
public ActionResult ExportReport(String DocType, String ReportID) {
|
||||||
return Content("Invalid report ID");
|
var c = SetupSSRSHelperClient();
|
||||||
|
var reports = GetReportList(DocType);
|
||||||
|
|
||||||
var reportParms = c.GetReportParameters(report.FullPath);
|
var report = reports.Where(r => String.Equals(r.ReportID, ReportID, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
|
||||||
|
if (report == null)
|
||||||
|
return Content("Invalid report ID");
|
||||||
|
|
||||||
var parms = new SSRSHelper.ReportParameterCollection();
|
var reportParms = c.GetReportParameters(report.FullPath);
|
||||||
parms.Add("DocType", DocType);
|
|
||||||
parms.Add("UserID", Convert.ToString(Session[GlobalVars.SESSION_USERID]));
|
|
||||||
parms.Add("BaseURL", GlobalVars.hostURL);
|
|
||||||
|
|
||||||
foreach (var rp in reportParms)
|
var parms = new SSRSHelper.ReportParameterCollection();
|
||||||
{
|
parms.Add("DocType", DocType);
|
||||||
if (rp.MultiValue.HasValue && rp.MultiValue.Value)
|
parms.Add("UserID", Convert.ToString(Session[GlobalVars.SESSION_USERID]));
|
||||||
{
|
parms.Add("BaseURL", GlobalVars.hostURL);
|
||||||
foreach (String v in Request.Params.GetValues("parm_" + rp.Name))
|
|
||||||
{
|
foreach (var rp in reportParms) {
|
||||||
parms.Add(rp.Name, v);
|
if (rp.MultiValue.HasValue && rp.MultiValue.Value) {
|
||||||
|
foreach (String v in Request.Params.GetValues("parm_" + rp.Name)) {
|
||||||
|
parms.Add(rp.Name, v);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String value = null;
|
||||||
|
|
||||||
|
if (Request.Params.AllKeys.Contains("parm_" + rp.Name))
|
||||||
|
value = Request.Params.GetValues("parm_" + rp.Name).FirstOrDefault();
|
||||||
|
|
||||||
|
if (value == specialNullString)
|
||||||
|
value = null;
|
||||||
|
|
||||||
|
if ((rp.AllowBlank.HasValue == false || rp.AllowBlank.Value == false) && value == "")
|
||||||
|
value = null;
|
||||||
|
|
||||||
|
if (value == null) {
|
||||||
|
if (rp.Nullable.HasValue == false || rp.Nullable.Value == false) {
|
||||||
|
if (rp.DefaultValues != null && rp.DefaultValues.Length > 0)
|
||||||
|
value = rp.DefaultValues[0];
|
||||||
|
if (value == null)
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
String value = null;
|
|
||||||
|
|
||||||
if (Request.Params.AllKeys.Contains("parm_" + rp.Name))
|
parms.Add(rp.Name, value);
|
||||||
value = Request.Params.GetValues("parm_" + rp.Name).FirstOrDefault();
|
|
||||||
|
|
||||||
if (value == specialNullString)
|
|
||||||
value = null;
|
|
||||||
|
|
||||||
if ((rp.AllowBlank.HasValue == false || rp.AllowBlank.Value == false) && value == "")
|
|
||||||
value = null;
|
|
||||||
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
if (rp.Nullable.HasValue == false || rp.Nullable.Value == false)
|
|
||||||
{
|
|
||||||
if (rp.DefaultValues != null && rp.DefaultValues.Length > 0)
|
|
||||||
value = rp.DefaultValues[0];
|
|
||||||
if (value == null)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
parms.Add(rp.Name, value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var b = c.ExportReport(report.FullPath, @User.Identity.Name, parms, "EXCELOPENXML");
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var b2 = c.FreezeExcelHeaders(b);
|
|
||||||
return File(b2, "application/octet-stream", MakeFilename(report.Name) + ".xlsx");
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
return File(b, "application/octet-stream", MakeFilename(report.Name) + ".xlsx");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String MakeFilename(String reportName)
|
var b = c.ExportReport(report.FullPath, @User.Identity.Name, parms, "EXCELOPENXML");
|
||||||
{
|
try {
|
||||||
String r = "";
|
var b2 = c.FreezeExcelHeaders(b);
|
||||||
var invalidChars = System.IO.Path.GetInvalidFileNameChars();
|
return File(b2, "application/octet-stream", MakeFilename(report.Name) + ".xlsx");
|
||||||
foreach (char c in reportName)
|
} catch {
|
||||||
{
|
|
||||||
if (invalidChars.Contains(c))
|
|
||||||
r += '_';
|
|
||||||
else
|
|
||||||
r += c;
|
|
||||||
}
|
|
||||||
return r;
|
|
||||||
}
|
}
|
||||||
|
return File(b, "application/octet-stream", MakeFilename(report.Name) + ".xlsx");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected String MakeFilename(String reportName) {
|
||||||
|
String r = "";
|
||||||
|
char[] invalidChars = System.IO.Path.GetInvalidFileNameChars();
|
||||||
|
foreach (char c in reportName) {
|
||||||
|
if (invalidChars.Contains(c))
|
||||||
|
r += '_';
|
||||||
|
else
|
||||||
|
r += c;
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
@ -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 CorrectiveActionController carFunctions = new CorrectiveActionController();
|
||||||
public TrainingController trainingFunctions = new TrainingController();
|
public AccountController accountFunctions = new AccountController();
|
||||||
public CorrectiveActionController carFunctions = new CorrectiveActionController();
|
public HomeController homeFunctions = new HomeController();
|
||||||
public AccountController accountFunctions = new AccountController();
|
private readonly AppSettings _AppSettings = GlobalVars.AppSettings;
|
||||||
public HomeController homeFunctions = new HomeController();
|
|
||||||
public string Get()
|
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)
|
|
||||||
{
|
|
||||||
|
|
||||||
switch (action)
|
|
||||||
{
|
|
||||||
case "TrainingReport":
|
|
||||||
if (trainingFunctions.RunTrainingReport())
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.OK);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.InternalServerError);
|
|
||||||
}
|
|
||||||
case "TrainingReportOOO":
|
|
||||||
if (trainingFunctions.RunOOOTrainingReport())
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.OK);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.InternalServerError);
|
|
||||||
}
|
|
||||||
case "CARDueDates":
|
|
||||||
if (carFunctions.ProcessCARDueDates())
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.OK);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.InternalServerError);
|
|
||||||
}
|
|
||||||
case "ProcessOoO":
|
|
||||||
if (homeFunctions.ProcessOoO())
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.OK);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.InternalServerError);
|
|
||||||
}
|
|
||||||
case "ExpireOoO":
|
|
||||||
if (homeFunctions.ExpireOoO())
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.OK);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.InternalServerError);
|
|
||||||
}
|
|
||||||
case "ApprovalReminders":
|
|
||||||
if (homeFunctions.ApprovalsReminderNotifications())
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.OK);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return request.CreateResponse(HttpStatusCode.InternalServerError);
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
return request.CreateResponse(HttpStatusCode.InternalServerError, "Action Not Found");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public HttpResponseMessage Post(HttpRequestMessage request, string action) {
|
||||||
|
switch (action) {
|
||||||
|
case "TrainingReport":
|
||||||
|
if (trainingFunctions.RunTrainingReport()) {
|
||||||
|
return request.CreateResponse(HttpStatusCode.OK);
|
||||||
|
} else {
|
||||||
|
return request.CreateResponse(HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
|
case "CARDueDates":
|
||||||
|
if (carFunctions.ProcessCARDueDates()) {
|
||||||
|
return request.CreateResponse(HttpStatusCode.OK);
|
||||||
|
} else {
|
||||||
|
return request.CreateResponse(HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
|
case "ProcessOoO":
|
||||||
|
if (homeFunctions.ProcessOoO()) {
|
||||||
|
return request.CreateResponse(HttpStatusCode.OK);
|
||||||
|
} else {
|
||||||
|
return request.CreateResponse(HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
|
case "ExpireOoO":
|
||||||
|
if (homeFunctions.ExpireOoO()) {
|
||||||
|
return request.CreateResponse(HttpStatusCode.OK);
|
||||||
|
} else {
|
||||||
|
return request.CreateResponse(HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
|
case "ApprovalReminders":
|
||||||
|
if (homeFunctions.ApprovalsReminderNotifications()) {
|
||||||
|
return request.CreateResponse(HttpStatusCode.OK);
|
||||||
|
} else {
|
||||||
|
return request.CreateResponse(HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return request.CreateResponse(HttpStatusCode.InternalServerError, "Action Not Found");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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;
|
||||||
|
|
||||||
namespace Fab2ApprovalSystem.Controllers
|
public class WorkflowController : Controller {
|
||||||
{
|
|
||||||
public class WorkflowController : Controller
|
|
||||||
{
|
|
||||||
//
|
|
||||||
|
|
||||||
//
|
|
||||||
// GET: /Workflow/Details/5
|
|
||||||
public ActionResult Details(int id)
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// GET: /Workflow/Create
|
|
||||||
public ActionResult Create()
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// POST: /Workflow/Create
|
|
||||||
[HttpPost]
|
|
||||||
public ActionResult Create(FormCollection collection)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// TODO: Add insert logic here
|
|
||||||
|
|
||||||
return RedirectToAction("Index");
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// GET: /Workflow/Edit/5
|
|
||||||
public ActionResult Edit(int id)
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// POST: /Workflow/Edit/5
|
|
||||||
[HttpPost]
|
|
||||||
public ActionResult Edit(int id, FormCollection collection)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// TODO: Add update logic here
|
|
||||||
|
|
||||||
return RedirectToAction("Index");
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// GET: /Workflow/Delete/5
|
|
||||||
public ActionResult Delete(int id)
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// POST: /Workflow/Delete/5
|
|
||||||
[HttpPost]
|
|
||||||
public ActionResult Delete(int id, FormCollection collection)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// TODO: Add delete logic here
|
|
||||||
|
|
||||||
return RedirectToAction("Index");
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// GET: /Workflow/Details/5
|
||||||
|
public ActionResult Details(int id) {
|
||||||
|
return View();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// GET: /Workflow/Create
|
||||||
|
public ActionResult Create() {
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
// POST: /Workflow/Create
|
||||||
|
[HttpPost]
|
||||||
|
public ActionResult Create(FormCollection collection) {
|
||||||
|
try {
|
||||||
|
// TODO: Add insert logic here
|
||||||
|
|
||||||
|
return RedirectToAction("Index");
|
||||||
|
} catch {
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GET: /Workflow/Edit/5
|
||||||
|
public ActionResult Edit(int id) {
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
// POST: /Workflow/Edit/5
|
||||||
|
[HttpPost]
|
||||||
|
public ActionResult Edit(int id, FormCollection collection) {
|
||||||
|
try {
|
||||||
|
// TODO: Add update logic here
|
||||||
|
|
||||||
|
return RedirectToAction("Index");
|
||||||
|
} catch {
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GET: /Workflow/Delete/5
|
||||||
|
public ActionResult Delete(int id) {
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
// POST: /Workflow/Delete/5
|
||||||
|
[HttpPost]
|
||||||
|
public ActionResult Delete(int id, FormCollection collection) {
|
||||||
|
try {
|
||||||
|
// TODO: Add delete logic here
|
||||||
|
|
||||||
|
return RedirectToAction("Index");
|
||||||
|
} catch {
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
59
Fab2ApprovalSystem/DMO/AccountDMO.cs
Normal file
59
Fab2ApprovalSystem/DMO/AccountDMO.cs
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,310 +1,299 @@
|
|||||||
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>
|
|
||||||
public List<Role> GetSubRoles()
|
|
||||||
{
|
|
||||||
StringBuilder sql = new StringBuilder();
|
|
||||||
sql.Append(
|
|
||||||
"SELECT R.RoleID, R.RoleName, SubRoleID, SubRoleCategoryItem, SR.RoleID, SR.Inactive " +
|
|
||||||
"FROM vSubRoles SR " +
|
|
||||||
"INNER JOIN Role R ON R.RoleID = SR.RoleID " +
|
|
||||||
"ORDER BY R.RoleID, SubRoleCategoryItem ");
|
|
||||||
|
|
||||||
|
namespace Fab2ApprovalSystem.DMO;
|
||||||
|
|
||||||
|
public class AdminDMO {
|
||||||
|
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(
|
||||||
|
"SELECT R.RoleID, R.RoleName, SubRoleID, SubRoleCategoryItem, SR.RoleID, SR.Inactive " +
|
||||||
|
"FROM vSubRoles SR " +
|
||||||
|
"INNER JOIN Role R ON R.RoleID = SR.RoleID " +
|
||||||
|
"ORDER BY R.RoleID, SubRoleCategoryItem ");
|
||||||
|
|
||||||
|
db.Open();
|
||||||
|
Dictionary<int, Role> lookup = new();
|
||||||
|
List<Role> data = db.Query<Role, SubRole, Role>(sql.ToString(),
|
||||||
|
(parent, child) => {
|
||||||
|
Role role;
|
||||||
|
if (!lookup.TryGetValue(parent.RoleID, out role)) {
|
||||||
|
lookup.Add(parent.RoleID, role = parent);
|
||||||
|
}
|
||||||
|
role.SubRoles.Add(child);
|
||||||
|
return role;
|
||||||
|
},
|
||||||
|
splitOn: "SubRoleID").Distinct().ToList();
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<UserSubRoles> GetUserSubRoles(int userId) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@UserId", userId);
|
||||||
|
List<UserSubRoles> userSubRoleList = db.Query<UserSubRoles>("GetSubRolesByUserId", parameters, commandType: CommandType.StoredProcedure).ToList();
|
||||||
|
return userSubRoleList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<LoginModel> GetAllUsersBySubRole(int subRole) {
|
||||||
|
StringBuilder sql = new();
|
||||||
|
sql.Append("SELECT FirstName + ' ' + LastName AS FullName , LoginID, FirstName, LastName, U.UserID, SubRoleID ");
|
||||||
|
sql.Append("FROM UserSubRole UR ");
|
||||||
|
sql.Append("INNER JOIN Users U ON UR.UserID = U.UserID ");
|
||||||
|
sql.Append("WHERE UR.SubRoleID = " + subRole.ToString() + " ");
|
||||||
|
sql.Append("ORDER BY FirstName");
|
||||||
|
|
||||||
|
return db.Query<LoginModel>(sql.ToString()).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddUserRoles(int subRole, string userids) {
|
||||||
|
string sql;
|
||||||
|
|
||||||
|
string[] arrayOfUsers = userids.Split(new char[] { '~' });
|
||||||
|
|
||||||
|
for (int i = 0; i < arrayOfUsers.Length; i++) {
|
||||||
|
sql = "INSERT INTO UserSubRole (UserID, SubRoleID) VALUES (" + arrayOfUsers[i] + ", " + subRole + " )";
|
||||||
|
db.Execute(sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteUserFromAllTrainingGroups(int userId) {
|
||||||
|
string sql = "DELETE FROM TrainingGroupMembers WHERE UserId = " + userId;
|
||||||
|
|
||||||
|
db.Open();
|
||||||
|
db.Execute(sql);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteUserRoles(int subRole, string userids) {
|
||||||
|
string sql;
|
||||||
|
|
||||||
|
string[] arrayOfUsers = userids.Split(new char[] { '~' });
|
||||||
|
|
||||||
|
for (int i = 0; i < arrayOfUsers.Length; i++) {
|
||||||
|
sql = "DELETE FROM UserSubRole WHERE UserID = " + arrayOfUsers[i] + " AND SubRoleID = " + subRole;
|
||||||
|
db.Execute(sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#if !NET8
|
||||||
|
public List<TrainingReportUser> GetTrainingReportUsers() {
|
||||||
|
List<TrainingReportUser> CurrentReportUsers = (from a in FabApprovalDB.TrainingReportUsers select a).ToList();
|
||||||
|
return CurrentReportUsers;
|
||||||
|
}
|
||||||
|
#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();
|
||||||
|
return currentTECNNotificationUsers;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public void TrainingReportAddUser(int userId) {
|
||||||
|
string sql = "INSERT INTO TrainingReportUsers (UserId) " + "VALUES ('" + userId + "') ";
|
||||||
|
|
||||||
|
db.Open();
|
||||||
|
db.Execute(sql);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void TECNExpirationAddUser(int userId) {
|
||||||
|
string sql = "INSERT INTO TECNNotificationsUsers (UserId) " + "VALUES ('" + userId + "') ";
|
||||||
|
|
||||||
|
db.Open();
|
||||||
|
db.Execute(sql);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void TrainingReportDeleteUser(int userId) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@UserID", userId);
|
||||||
|
|
||||||
|
db.Execute("DeleteUserFromTrainingReport", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void TECNExpirationDeleteUser(int userId) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@UserID", userId);
|
||||||
|
|
||||||
|
db.Execute("DeleteUserFromTECNReport", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if !NET8
|
||||||
|
public List<TrainingGroup> GetTrainingGroups() {
|
||||||
|
var TrainingGroups = from a in FabApprovalDB.TrainingGroups select a;
|
||||||
|
List<TrainingGroup> GroupsToReturn = TrainingGroups.ToList();
|
||||||
|
|
||||||
|
return GroupsToReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddNewTrainingGroup(string groupName) {
|
||||||
|
TrainingGroup existing = null;
|
||||||
|
// Check to see that the group name doesn't exist.
|
||||||
|
try {
|
||||||
|
existing = (from a in FabApprovalDB.TrainingGroups where a.TrainingGroupName == groupName select a).FirstOrDefault();
|
||||||
|
} catch {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (existing == null) {
|
||||||
|
string sql = "INSERT INTO TrainingGroups (TrainingGroupName) " + "VALUES ('" + groupName + "') ";
|
||||||
|
|
||||||
|
this.db.Open();
|
||||||
|
this.db.Execute(sql);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public void DeleteTrainingGroup(int groupID) {
|
||||||
|
try {
|
||||||
|
string sql = "DELETE FROM TrainingGroups WHERE TrainingGroupID = " + groupID;
|
||||||
db.Open();
|
db.Open();
|
||||||
var lookup = new Dictionary<int, Role>();
|
db.Execute(sql);
|
||||||
List<Role> data = this.db.Query<Role, SubRole, Role>(sql.ToString(),
|
|
||||||
(parent, child) =>
|
|
||||||
{
|
|
||||||
Role role;
|
|
||||||
if (!lookup.TryGetValue(parent.RoleID, out role))
|
|
||||||
{
|
|
||||||
lookup.Add(parent.RoleID, role = parent);
|
|
||||||
}
|
|
||||||
//if (role.RoleID == null)
|
|
||||||
// role.SubRoles = new List<SubRole>();
|
|
||||||
role.SubRoles.Add(child);
|
|
||||||
return role;
|
|
||||||
},
|
|
||||||
splitOn: "SubRoleID").Distinct().ToList();
|
|
||||||
|
|
||||||
|
sql = "DELETE FROM TrainingGroupMembers WHERE TrainingGroupID = " + groupID;
|
||||||
return data;
|
db.Execute(sql);
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// /// <param name="userId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public List<UserSubRoles> GetUserSubRoles(int userId)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@UserId", userId);
|
|
||||||
var userSubRoleList = this.db.Query<UserSubRoles>("GetSubRolesByUserId", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
||||||
return userSubRoleList;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </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("FROM UserSubRole UR ");
|
|
||||||
sql.Append("INNER JOIN Users U ON UR.UserID = U.UserID ");
|
|
||||||
sql.Append("WHERE UR.SubRoleID = " + subRole.ToString() + " ");
|
|
||||||
sql.Append("ORDER BY FirstName");
|
|
||||||
|
|
||||||
return this.db.Query<LoginModel>(sql.ToString()).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="subRole"></param>
|
|
||||||
/// <param name="userids"></param>
|
|
||||||
public void AddUserRoles(int subRole, string userids)
|
|
||||||
{
|
|
||||||
string sql;
|
|
||||||
|
|
||||||
string[] arrayOfUsers = userids.Split(new char[] { '~' });
|
|
||||||
|
|
||||||
for (int i = 0; i < arrayOfUsers.Length; i++)
|
|
||||||
{
|
|
||||||
sql = "INSERT INTO UserSubRole (UserID, SubRoleID) VALUES (" + arrayOfUsers[i] + ", " + subRole + " )";
|
|
||||||
this.db.Execute(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DeleteUserFromAllTrainingGroups(int userId)
|
|
||||||
{
|
|
||||||
string sql = "DELETE FROM TrainingGroupMembers WHERE UserId = " + userId;
|
|
||||||
|
|
||||||
|
|
||||||
this.db.Open();
|
|
||||||
this.db.Execute(sql);
|
|
||||||
return;
|
return;
|
||||||
|
} catch {
|
||||||
}
|
}
|
||||||
/// <summary>
|
}
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="subRole"></param>
|
|
||||||
/// <param name="userids"></param>
|
|
||||||
public void DeleteUserRoles(int subRole, string userids)
|
|
||||||
{
|
|
||||||
string sql;
|
|
||||||
|
|
||||||
string[] arrayOfUsers = userids.Split(new char[] { '~' });
|
#if !NET8
|
||||||
|
public List<TrainingGroupMember> GetTrainingGroupMembers(int GroupID) {
|
||||||
|
return (from a in FabApprovalDB.TrainingGroupMembers where a.TrainingGroupID == GroupID select a).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < arrayOfUsers.Length; i++)
|
public void AddUserToGroup(int userId, int groupId) {
|
||||||
{
|
UserAccountDMO userDB = new UserAccountDMO();
|
||||||
sql = "DELETE FROM UserSubRole WHERE UserID = " + arrayOfUsers[i] + " AND SubRoleID = " + subRole;
|
string userFullName = userDB.GetUserByID(userId).FullName;
|
||||||
this.db.Execute(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
TrainingGroupMember existing = null;
|
||||||
public List<TrainingReportUser> GetTrainingReportUsers()
|
|
||||||
{
|
|
||||||
List<TrainingReportUser> CurrentReportUsers = (from a in FabApprovalDB.TrainingReportUsers select a).ToList();
|
|
||||||
return CurrentReportUsers;
|
|
||||||
}
|
|
||||||
public List<TECNNotificationsUser> GetTECNNotificationUsers()
|
|
||||||
{
|
|
||||||
List<TECNNotificationsUser> currentTECNNotificationUsers = (from a in FabApprovalDB.TECNNotificationsUsers select a).ToList();
|
|
||||||
return currentTECNNotificationUsers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void TrainingReportAddUser(int userId)
|
existing = (from a in FabApprovalDB.TrainingGroupMembers where a.TrainingGroupID == groupId && a.UserID == userId select a).FirstOrDefault();
|
||||||
{
|
if (existing == null) {
|
||||||
string sql = "INSERT INTO TrainingReportUsers (UserId) " + "VALUES ('" + userId + "') ";
|
|
||||||
|
|
||||||
|
|
||||||
this.db.Open();
|
|
||||||
this.db.Execute(sql);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
public void TECNExpirationAddUser(int userId)
|
|
||||||
{
|
|
||||||
string sql = "INSERT INTO TECNNotificationsUsers (UserId) " + "VALUES ('" + userId + "') ";
|
|
||||||
|
|
||||||
this.db.Open();
|
|
||||||
this.db.Execute(sql);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
public void TrainingReportDeleteUser(int userId)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
|
|
||||||
parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@UserID", userId);
|
|
||||||
|
|
||||||
this.db.Execute("DeleteUserFromTrainingReport", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
public void TECNExpirationDeleteUser(int userId)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
|
|
||||||
parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@UserID", userId);
|
|
||||||
|
|
||||||
this.db.Execute("DeleteUserFromTECNReport", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
public List<TrainingGroup> GetTrainingGroups()
|
|
||||||
{
|
|
||||||
//StringBuilder sql = new StringBuilder();
|
|
||||||
//sql.Append(
|
|
||||||
// "SELECT 'TrainingGroupID', TrainingGroupName " +
|
|
||||||
// "FROM TrainingGroups " +
|
|
||||||
// "ORDER BY TrainingGroupID ");
|
|
||||||
|
|
||||||
//db.Open();
|
|
||||||
//var lookup = new Dictionary<int, TrainingGroup>();
|
|
||||||
////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;
|
|
||||||
List<TrainingGroup> GroupsToReturn = TrainingGroups.ToList();
|
|
||||||
|
|
||||||
return GroupsToReturn;
|
|
||||||
}
|
|
||||||
public void AddNewTrainingGroup(string groupName)
|
|
||||||
{
|
|
||||||
TrainingGroup existing = null;
|
|
||||||
//Check to see that the group name doesn't exist.
|
|
||||||
try
|
|
||||||
{
|
|
||||||
existing = (from a in FabApprovalDB.TrainingGroups where a.TrainingGroupName == groupName select a).FirstOrDefault();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// string test = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (existing == null)
|
|
||||||
{
|
|
||||||
//string sql = new StringBuilder();
|
|
||||||
string sql = "INSERT INTO TrainingGroups (TrainingGroupName) " + "VALUES ('" + groupName + "') ";
|
|
||||||
|
|
||||||
|
|
||||||
this.db.Open();
|
|
||||||
this.db.Execute(sql);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DeleteTrainingGroup(int groupID)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string sql = "DELETE FROM TrainingGroups WHERE TrainingGroupID = " + groupID;
|
|
||||||
this.db.Open();
|
|
||||||
this.db.Execute(sql);
|
|
||||||
|
|
||||||
sql = "DELETE FROM TrainingGroupMembers WHERE TrainingGroupID = " + groupID;
|
|
||||||
this.db.Execute(sql);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public List<TrainingGroupMember> GetTrainingGroupMembers(int GroupID)
|
|
||||||
{
|
|
||||||
return (from a in FabApprovalDB.TrainingGroupMembers where a.TrainingGroupID == GroupID select a).ToList();
|
|
||||||
}
|
|
||||||
public void AddUserToGroup(int userId, int groupId)
|
|
||||||
{
|
|
||||||
UserAccountDMO userDB = new UserAccountDMO();
|
|
||||||
string userFullName = userDB.GetUserByID(userId).FullName;
|
|
||||||
|
|
||||||
TrainingGroupMember existing = null;
|
|
||||||
|
|
||||||
existing = (from a in FabApprovalDB.TrainingGroupMembers where a.TrainingGroupID == groupId && a.UserID == userId select a).FirstOrDefault();
|
|
||||||
if (existing == null)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
|
|
||||||
parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@GroupID", groupId);
|
|
||||||
parameters.Add("@UserID", userId);
|
|
||||||
parameters.Add("@UserFullName", userFullName);
|
|
||||||
|
|
||||||
this.db.Execute("AddUserToTrainingGroup", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
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)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
var parameters = new DynamicParameters();
|
||||||
|
|
||||||
parameters = new DynamicParameters();
|
parameters = new DynamicParameters();
|
||||||
parameters.Add("@GroupID", groupId);
|
parameters.Add("@GroupID", groupId);
|
||||||
parameters.Add("@UserID", userId);
|
parameters.Add("@UserID", userId);
|
||||||
|
parameters.Add("@UserFullName", userFullName);
|
||||||
|
|
||||||
this.db.Execute("DeleteUserFromTrainingGroup", parameters, commandType: CommandType.StoredProcedure);
|
this.db.Execute("AddUserToTrainingGroup", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
} else {
|
||||||
|
throw new Exception("The user already exists in this training group.");
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
}
|
||||||
|
#endif
|
||||||
|
public void DeleteFromGroup(int userId, int groupId) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@GroupID", groupId);
|
||||||
|
parameters.Add("@UserID", userId);
|
||||||
|
|
||||||
|
db.Execute("DeleteUserFromTrainingGroup", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
|
||||||
|
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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
}
|
@ -1,32 +1,26 @@
|
|||||||
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();
|
|
||||||
parameters.Add("@IssueID", appLog.IssueID);
|
|
||||||
parameters.Add("@UserID", appLog.UserID);
|
|
||||||
parameters.Add("@OperationType", appLog.OperationType);
|
|
||||||
parameters.Add("@SubRoleID", appLog.SubRoleID);
|
|
||||||
parameters.Add("@OperationLog", appLog.OperationLog);
|
|
||||||
parameters.Add("@DocumentTypeID", appLog.DocumentTypeID);
|
|
||||||
|
|
||||||
db.Execute("InsertApprovalLogByDocument", parameters, commandType: CommandType.StoredProcedure);
|
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("@UserID", appLog.UserID);
|
||||||
|
parameters.Add("@OperationType", appLog.OperationType);
|
||||||
|
parameters.Add("@SubRoleID", appLog.SubRoleID);
|
||||||
|
parameters.Add("@OperationLog", appLog.OperationLog);
|
||||||
|
parameters.Add("@DocumentTypeID", appLog.DocumentTypeID);
|
||||||
|
|
||||||
|
db.Execute("InsertApprovalLogByDocument", 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
@ -1,40 +1,24 @@
|
|||||||
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 {
|
||||||
parameters.Add("@ECNNumber", changeLog.ECNNumber);
|
private static readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
||||||
parameters.Add("@UserID", changeLog.UserID);
|
|
||||||
parameters.Add("@ECNTypeFrom", changeLog.ECNTypeFrom);
|
|
||||||
parameters.Add("@ECNTypeTo", changeLog.ECNTypeTo);
|
|
||||||
|
|
||||||
db.Execute("ECNInsertECNTypeChangeLog", parameters, commandType: CommandType.StoredProcedure);
|
public static void Add(ECNTypeChangeLog changeLog) {
|
||||||
}
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@ECNNumber", changeLog.ECNNumber);
|
||||||
|
parameters.Add("@UserID", changeLog.UserID);
|
||||||
|
parameters.Add("@ECNTypeFrom", changeLog.ECNTypeFrom);
|
||||||
|
parameters.Add("@ECNTypeTo", changeLog.ECNTypeTo);
|
||||||
|
|
||||||
|
db.Execute("ECNInsertECNTypeChangeLog", parameters, commandType: CommandType.StoredProcedure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
@ -1,51 +1,25 @@
|
|||||||
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)
|
|
||||||
//{
|
|
||||||
// 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("@UserID", eventLog.UserID);
|
|
||||||
parameters.Add("@DocumentType", eventLog.DocumentType);
|
|
||||||
parameters.Add("@OperationType", eventLog.OperationType);
|
|
||||||
parameters.Add("@Comments", eventLog.Comments);
|
|
||||||
|
|
||||||
db.Execute("InsertEventLogByDocument", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public static void Add(WinEventLog eventLog) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@IssueID", eventLog.IssueID);
|
||||||
|
parameters.Add("@UserID", eventLog.UserID);
|
||||||
|
parameters.Add("@DocumentType", eventLog.DocumentType);
|
||||||
|
parameters.Add("@OperationType", eventLog.OperationType);
|
||||||
|
parameters.Add("@Comments", eventLog.Comments);
|
||||||
|
|
||||||
|
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
File diff suppressed because it is too large
Load Diff
@ -1,129 +1,112 @@
|
|||||||
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();
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Insert(PartsRequest pr)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@PRNumber", value: pr.PRNumber, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
|
||||||
parameters.Add("@OriginatorID", pr.OriginatorID);
|
|
||||||
|
|
||||||
this.db.Execute("PartsRequestInsert", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
|
|
||||||
pr.PRNumber = parameters.Get<int>("@PRNumber");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Update(PartsRequest pr)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@PRNumber", pr.PRNumber);
|
|
||||||
parameters.Add("@Title", pr.Title);
|
|
||||||
parameters.Add("@RequestorID", pr.RequestorID);
|
|
||||||
parameters.Add("@TechLeadID", pr.TechLeadID);
|
|
||||||
parameters.Add("@Description", pr.Description);
|
|
||||||
|
|
||||||
this.db.Execute("PartsRequestUpdate", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PartsRequest Get(int PRNumber)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@PRNumber", value: PRNumber, dbType: DbType.Int32);
|
|
||||||
|
|
||||||
return this.db.Query<PartsRequest>("PartsRequestGet", parameters, commandType: CommandType.StoredProcedure).SingleOrDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<PartsRequestAttachmentList> GetAttachments(int prNumber)
|
|
||||||
{
|
|
||||||
var attachments = this.db.Query<PartsRequestAttachmentList>(
|
|
||||||
"SELECT AttachmentID, PRNumber, FileName, A.UserID, UploadDate, U.FirstName + ' ' + U.LastName AS FullName " +
|
|
||||||
"FROM PartsRequestAttachment A " +
|
|
||||||
"INNER JOIN Users U ON U.UserID = A.UserID " +
|
|
||||||
"WHERE PRNumber = @PRNumber",
|
|
||||||
new { PRNumber = prNumber }).ToList();
|
|
||||||
return attachments;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void InsertAttachment(PartsRequestAttachment attach)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@PRNumber", attach.PRNumber);
|
|
||||||
parameters.Add("@UserID", attach.UserID);
|
|
||||||
parameters.Add("@FileName", attach.FileName);
|
|
||||||
|
|
||||||
this.db.Execute("PartsRequestInsertAttachment", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetFileName(string attachmentID)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@AttachmentID", attachmentID);
|
|
||||||
var fileName = this.db.Query<string>("PartsRequestGetAttachmentFileName", parameters, commandType: CommandType.StoredProcedure).Single();
|
|
||||||
return fileName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DeleteAttachment(int attachmentID)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@AttachmentID", attachmentID);
|
|
||||||
this.db.Execute("PartsRequestDeleteAttachment", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Submit(int prNumber, int userID)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@PRNumber", prNumber);
|
|
||||||
parameters.Add("@UserID", userID);
|
|
||||||
this.db.Execute("PartsRequestSubmitForApproval", parameters, commandType: CommandType.StoredProcedure );
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<ApprovalLogHistory> GetApprovalLogHistory(int prNumber)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@PRNumber", prNumber);
|
|
||||||
var approverList = this.db.Query<ApprovalLogHistory>("PartsRequestGetApprovalLogHistory", parameters, commandType: CommandType.StoredProcedure).ToList();
|
|
||||||
return approverList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<MyPartsRequestList> GetMyPartsRequests(int userID)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@UserID", userID);
|
|
||||||
|
|
||||||
var r = this.db.Query<MyPartsRequestList>("PartsRequestGetListByUser", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
return r.ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DeleteDocument(int prNumber, int userid)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@UserID", userid);
|
|
||||||
parameters.Add("@PRNumber", prNumber);
|
|
||||||
|
|
||||||
this.db.Execute("PartsRequestDelete", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public IEnumerable<PartsRequestList> GetPartsRequestList() {
|
||||||
|
List<PartsRequestList> r = db.Query<PartsRequestList>("PartsRequestGetList", commandType: CommandType.StoredProcedure).ToList();
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Insert(PartsRequest pr) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@PRNumber", value: pr.PRNumber, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
||||||
|
parameters.Add("@OriginatorID", pr.OriginatorID);
|
||||||
|
|
||||||
|
db.Execute("PartsRequestInsert", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
|
||||||
|
pr.PRNumber = parameters.Get<int>("@PRNumber");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update(PartsRequest pr) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@PRNumber", pr.PRNumber);
|
||||||
|
parameters.Add("@Title", pr.Title);
|
||||||
|
parameters.Add("@RequestorID", pr.RequestorID);
|
||||||
|
parameters.Add("@TechLeadID", pr.TechLeadID);
|
||||||
|
parameters.Add("@Description", pr.Description);
|
||||||
|
|
||||||
|
db.Execute("PartsRequestUpdate", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PartsRequest Get(int PRNumber) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@PRNumber", value: PRNumber, dbType: DbType.Int32);
|
||||||
|
|
||||||
|
return db.Query<PartsRequest>("PartsRequestGet", parameters, commandType: CommandType.StoredProcedure).SingleOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<PartsRequestAttachmentList> GetAttachments(int prNumber) {
|
||||||
|
List<PartsRequestAttachmentList> attachments = db.Query<PartsRequestAttachmentList>(
|
||||||
|
"SELECT AttachmentID, PRNumber, FileName, A.UserID, UploadDate, U.FirstName + ' ' + U.LastName AS FullName " +
|
||||||
|
"FROM PartsRequestAttachment A " +
|
||||||
|
"INNER JOIN Users U ON U.UserID = A.UserID " +
|
||||||
|
"WHERE PRNumber = @PRNumber",
|
||||||
|
new { PRNumber = prNumber }).ToList();
|
||||||
|
return attachments;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void InsertAttachment(PartsRequestAttachment attach) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@PRNumber", attach.PRNumber);
|
||||||
|
parameters.Add("@UserID", attach.UserID);
|
||||||
|
parameters.Add("@FileName", attach.FileName);
|
||||||
|
|
||||||
|
db.Execute("PartsRequestInsertAttachment", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFileName(string attachmentID) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@AttachmentID", attachmentID);
|
||||||
|
var fileName = db.Query<string>("PartsRequestGetAttachmentFileName", parameters, commandType: CommandType.StoredProcedure).Single();
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteAttachment(int attachmentID) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@AttachmentID", attachmentID);
|
||||||
|
db.Execute("PartsRequestDeleteAttachment", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Submit(int prNumber, int userID) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@PRNumber", prNumber);
|
||||||
|
parameters.Add("@UserID", userID);
|
||||||
|
db.Execute("PartsRequestSubmitForApproval", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<ApprovalLogHistory> GetApprovalLogHistory(int prNumber) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@PRNumber", prNumber);
|
||||||
|
List<ApprovalLogHistory> approverList = db.Query<ApprovalLogHistory>("PartsRequestGetApprovalLogHistory", parameters, commandType: CommandType.StoredProcedure).ToList();
|
||||||
|
return approverList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<MyPartsRequestList> GetMyPartsRequests(int userID) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@UserID", userID);
|
||||||
|
|
||||||
|
IEnumerable<MyPartsRequestList> r = db.Query<MyPartsRequestList>("PartsRequestGetListByUser", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
return r.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteDocument(int prNumber, int userid) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@UserID", userid);
|
||||||
|
parameters.Add("@PRNumber", prNumber);
|
||||||
|
|
||||||
|
db.Execute("PartsRequestDelete", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -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) ");
|
public int HasITARAccess(string userID) {
|
||||||
//query.Append("WHERE UserID = @UserID AND AND EmployeeStatus = 'Active'");
|
StringBuilder query = new("SELECT COUNT(*) FROM dbo.fnIsUserITARCompliant(@UserID) ");
|
||||||
return this.db.Query<int>(query.ToString(), new { UserID = userID }).SingleOrDefault();
|
return db.Query<int>(query.ToString(), new { UserID = userID }).SingleOrDefault();
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,452 +1,520 @@
|
|||||||
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
|
|
||||||
{
|
|
||||||
private IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FabApprovalConnection"].ConnectionString);
|
|
||||||
private static FabApprovalTrainingEntities FabApprovalDB = new FabApprovalTrainingEntities();
|
|
||||||
|
|
||||||
public int Create(int issueId)
|
public class TrainingDMO {
|
||||||
{
|
private readonly IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
|
||||||
var parameters = new DynamicParameters();
|
#if !NET8
|
||||||
|
private static FabApprovalTrainingEntities FabApprovalDB = new FabApprovalTrainingEntities();
|
||||||
|
#endif
|
||||||
|
|
||||||
parameters = new DynamicParameters();
|
public int Create(int issueId) {
|
||||||
parameters.Add("@TrainingId", dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
DynamicParameters parameters = new();
|
||||||
parameters.Add("@ECNNumber", issueId);
|
parameters.Add("@TrainingId", dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
||||||
|
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) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@TrainingID", trainingId);
|
||||||
|
parameters.Add("@UserID", userId);
|
||||||
|
parameters.Add("@AssignmentID", dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
||||||
|
|
||||||
|
db.Execute("InsertTrainingAssignment", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
int assignmentId = parameters.Get<int>("@AssignmentID");
|
||||||
|
|
||||||
|
return assignmentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<Training> GetAllTrainings() {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
IEnumerable<Training> allTrainings = (from a in db.Trainings select a).ToList();
|
||||||
|
|
||||||
|
return allTrainings;
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public Training GetTraining(int trainingId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
Training trainingRecord = new Training();
|
||||||
|
trainingRecord = (from a in db.Trainings where a.TrainingID == trainingId select a).FirstOrDefault();
|
||||||
|
return trainingRecord;
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public TrainingAssignment GetAssignment(int assignmentId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
TrainingAssignment assignmentRecord = (from a in db.TrainingAssignments where a.ID == assignmentId select a).FirstOrDefault();
|
||||||
|
return assignmentRecord;
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetTrainingId(int issueId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
int ECNId = issueId;
|
||||||
|
int trainingId = (from a in db.Trainings where a.ECN == ECNId select a.TrainingID).FirstOrDefault();
|
||||||
|
|
||||||
|
return trainingId;
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<int> GetTrainees(int groupId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
var users = (from a in db.TrainingGroupMembers where a.TrainingGroupID == groupId select a.UserID).ToList();
|
||||||
|
|
||||||
|
return users;
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool isUserTrainingMember(int groupId, int userId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
var users = (from a in db.TrainingGroupMembers where a.TrainingGroupID == groupId && a.UserID == userId select a).FirstOrDefault();
|
||||||
|
|
||||||
|
if (users == null) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
public int CreateAssignment(int trainingId, int userId)
|
#else
|
||||||
{
|
throw new NotImplementedException();
|
||||||
var parameters = new DynamicParameters();
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
parameters = new DynamicParameters();
|
public List<TrainingGroup> GetTrainingGroups() {
|
||||||
//parameters.Add("@TrainingId", dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
#if !NET8
|
||||||
parameters.Add("@TrainingID", trainingId);
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
parameters.Add("@UserID", userId);
|
return (from a in db.TrainingGroups select a).ToList();
|
||||||
parameters.Add("@AssignmentID", dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
this.db.Execute("InsertTrainingAssignment", parameters, commandType: CommandType.StoredProcedure);
|
public TrainingGroup GetTrainingGroupByID(int groupId) {
|
||||||
int assignmentId = parameters.Get<int>("@AssignmentID");
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
TrainingGroup groups = (from a in db.TrainingGroups where a.TrainingGroupID == groupId select a).FirstOrDefault();
|
||||||
|
return groups;
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
return assignmentId;
|
public List<int> GetECNAssignedTrainingGroups(int ECNNumber) {
|
||||||
}
|
#if !NET8
|
||||||
public IEnumerable<Training> GetAllTrainings()
|
List<int> trainingGroups = (from a in FabApprovalDB.ECNTrainingBies where a.ECNNumber == ECNNumber select a.AcknowledgementTrainingByID).ToList();
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
IEnumerable<Training> allTrainings = (from a in db.Trainings select a).ToList();
|
|
||||||
|
|
||||||
return allTrainings;
|
return trainingGroups;
|
||||||
}
|
#else
|
||||||
public Training GetTraining(int trainingId)
|
throw new NotImplementedException();
|
||||||
{
|
#endif
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
}
|
||||||
Training trainingRecord = new Training();
|
|
||||||
trainingRecord = (from a in db.Trainings where a.TrainingID == trainingId select a).FirstOrDefault();
|
|
||||||
return trainingRecord;
|
|
||||||
}
|
|
||||||
public TrainingAssignment GetAssignment(int assignmentId)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
TrainingAssignment assignmentRecord = (from a in db.TrainingAssignments where a.ID == assignmentId select a).FirstOrDefault();
|
|
||||||
return assignmentRecord;
|
|
||||||
}
|
|
||||||
public int GetTrainingId(int issueId)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
int ECNId = issueId;
|
|
||||||
int trainingId = (from a in db.Trainings where a.ECN == ECNId select a.TrainingID).FirstOrDefault();
|
|
||||||
|
|
||||||
return trainingId;
|
public void AddTrainingGroupToECN(int ECNNumber, int groupId) {
|
||||||
}
|
#if !NET8
|
||||||
public List<int> GetTrainees(int groupId)
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
var users = (from a in db.TrainingGroupMembers where a.TrainingGroupID == groupId select a.UserID).ToList();
|
|
||||||
|
|
||||||
return users;
|
var parameters = new DynamicParameters();
|
||||||
}
|
parameters.Add("@ECNNumber", ECNNumber);
|
||||||
public bool isUserTrainingMember(int groupId, int userId)
|
parameters.Add("@TrainingByID", groupId);
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
var users = (from a in db.TrainingGroupMembers where a.TrainingGroupID == groupId && a.UserID == userId select a).FirstOrDefault();
|
|
||||||
|
|
||||||
if (users == null)
|
this.db.Execute("ECNInsertTrainingBy", parameters, commandType: CommandType.StoredProcedure);
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
#else
|
||||||
public List<TrainingGroup> GetTrainingGroups()
|
throw new NotImplementedException();
|
||||||
{
|
#endif
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
}
|
||||||
return (from a in db.TrainingGroups select a).ToList();
|
|
||||||
}
|
|
||||||
public TrainingGroup GetTrainingGroupByID(int groupId)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
TrainingGroup groups = (from a in db.TrainingGroups where a.TrainingGroupID == groupId select a).FirstOrDefault();
|
|
||||||
return groups;
|
|
||||||
}
|
|
||||||
public List<int> GetECNAssignedTrainingGroups(int ECNNumber)
|
|
||||||
{
|
|
||||||
List<int> trainingGroups = (from a in FabApprovalDB.ECNTrainingBies where a.ECNNumber == ECNNumber select a.AcknowledgementTrainingByID).ToList();
|
|
||||||
|
|
||||||
return trainingGroups;
|
public void SetTrainingFlag(int ECNNumber) {
|
||||||
}
|
#if !NET8
|
||||||
public void AddTrainingGroupToECN(int ECNNumber, int groupId)
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
{
|
var parameters = new DynamicParameters();
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
parameters.Add("@ECNNumber", ECNNumber);
|
||||||
//ECNTrainingBy ecnTraining = new ECNTrainingBy();
|
|
||||||
//ecnTraining.AcknowledgementTrainingByID = groupId;
|
|
||||||
//ecnTraining.ECNNumber = ECNNumber;
|
|
||||||
|
|
||||||
var parameters = new DynamicParameters();
|
this.db.Execute("ECNSetTrainingFlag", parameters, commandType: CommandType.StoredProcedure);
|
||||||
parameters.Add("@ECNNumber", ECNNumber);
|
|
||||||
parameters.Add("@TrainingByID", groupId);
|
|
||||||
|
|
||||||
this.db.Execute("ECNInsertTrainingBy", parameters, commandType: CommandType.StoredProcedure);
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<TrainingAssignment> GetAllTrainingAssignments(int TrainingID) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
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;
|
||||||
|
|
||||||
//db.ECNTrainingBies.Add(ecnTraining);
|
return TrainingData.ToList();
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
}
|
public List<TrainingAssignment> GetTrainingAssignments(int TrainingID) {
|
||||||
public void SetTrainingFlag(int ECNNumber)
|
#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;
|
||||||
//ECNTrainingBy ecnTraining = new ECNTrainingBy();
|
|
||||||
//ecnTraining.AcknowledgementTrainingByID = groupId;
|
|
||||||
//ecnTraining.ECNNumber = ECNNumber;
|
|
||||||
|
|
||||||
var parameters = new DynamicParameters();
|
RefreshTrainingData(TrainingID, TrainingData);
|
||||||
parameters.Add("@ECNNumber", ECNNumber);
|
|
||||||
|
|
||||||
this.db.Execute("ECNSetTrainingFlag", parameters, commandType: CommandType.StoredProcedure);
|
TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID select a;
|
||||||
|
|
||||||
|
return TrainingData.ToList();
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<TrainingAssignment> GetTrainingAssignmentsByUser(int TrainingID, int userID) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID && a.UserID == userID select a;
|
||||||
|
|
||||||
|
return TrainingData.ToList();
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
//db.ECNTrainingBies.Add(ecnTraining);
|
public List<TrainingDocAck> GetAssignedDocs(int trainingAssignmentId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
var docs = (from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentId && a.Deleted != true select a).ToList();
|
||||||
|
|
||||||
}
|
return docs;
|
||||||
public List<TrainingAssignment> GetAllTrainingAssignments(int TrainingID)
|
#else
|
||||||
{
|
throw new NotImplementedException();
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
#endif
|
||||||
var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID select a;
|
}
|
||||||
|
|
||||||
return TrainingData.ToList();
|
public void AcknowledgeDocument(int trainingDocAckID) {
|
||||||
}
|
DynamicParameters parameters = new();
|
||||||
public List<TrainingAssignment> GetTrainingAssignments(int TrainingID)
|
parameters.Add("@TrainingDocAckID", trainingDocAckID);
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID && a.Deleted != true select a;
|
|
||||||
|
|
||||||
return TrainingData.ToList();
|
db.Execute("TrainingAcknowledgeDocument", parameters, commandType: CommandType.StoredProcedure);
|
||||||
}
|
}
|
||||||
public List<TrainingAssignment> GetTrainingAssignmentsByUser(int TrainingID, int userID)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID && a.UserID == userID select a;
|
|
||||||
|
|
||||||
return TrainingData.ToList();
|
public void UpdateAssignmentStatus(int trainingAssignmentID) {
|
||||||
}
|
#if !NET8
|
||||||
public List<TrainingDocAck> GetAssignedDocs(int trainingAssignmentId)
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
{
|
var RecordToUpdate = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a).SingleOrDefault();
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
if (RecordToUpdate.status != true) {
|
||||||
var docs = (from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentId && a.Deleted != true select a).ToList();
|
RecordToUpdate.DateCompleted = DateTime.Now;
|
||||||
|
RecordToUpdate.status = true;
|
||||||
return docs;
|
try {
|
||||||
}
|
|
||||||
public void AcknowledgeDocument(int trainingDocAckID)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
|
|
||||||
parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@TrainingDocAckID", trainingDocAckID);
|
|
||||||
//parameters.Add("@AttachmentID", attachmentID);
|
|
||||||
|
|
||||||
this.db.Execute("TrainingAcknowledgeDocument", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
|
|
||||||
}
|
|
||||||
public void UpdateAssignmentStatus(int trainingAssignmentID)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
var RecordToUpdate = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a).SingleOrDefault();
|
|
||||||
if(RecordToUpdate.status != true)
|
|
||||||
{
|
|
||||||
RecordToUpdate.DateCompleted = DateTime.Now;
|
|
||||||
RecordToUpdate.status = true;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
db.SaveChanges();
|
|
||||||
}
|
|
||||||
catch (InvalidOperationException e)
|
|
||||||
{
|
|
||||||
string exception = e.ToString();
|
|
||||||
Console.WriteLine(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
public int GetTrainingIdByAssignment(int trainingAssignmentID)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
int trainingID = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a.TrainingID).SingleOrDefault();
|
|
||||||
|
|
||||||
return trainingID;
|
|
||||||
}
|
|
||||||
public void UpdateTrainingStatus(int trainingId)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).SingleOrDefault();
|
|
||||||
|
|
||||||
if (training != null)
|
|
||||||
{
|
|
||||||
training.CompletedDate = DateTime.Now;
|
|
||||||
training.Status = true;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
db.SaveChanges();
|
|
||||||
}
|
|
||||||
catch (InvalidOperationException e)
|
|
||||||
{
|
|
||||||
string exception = e.ToString();
|
|
||||||
Console.WriteLine(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void reOpenTraining(int trainingId)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).SingleOrDefault();
|
|
||||||
|
|
||||||
if (training != null)
|
|
||||||
{
|
|
||||||
training.CompletedDate = null;
|
|
||||||
training.Status = false;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
db.SaveChanges();
|
|
||||||
}
|
|
||||||
catch (InvalidOperationException e)
|
|
||||||
{
|
|
||||||
string exception = e.ToString();
|
|
||||||
Console.WriteLine(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool CheckTrainingStatus(int trainingAssignmentID)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
bool isFinished = true;
|
|
||||||
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;
|
|
||||||
|
|
||||||
foreach (var training in trainingAssignments)
|
|
||||||
{
|
|
||||||
if (training.status == false)
|
|
||||||
{
|
|
||||||
isFinished = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return isFinished;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool CheckTrainingAssignmentStatus(int trainingAssignmentID)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
bool isFinished = true;
|
|
||||||
//TrainingDocAck docsAssigned = null;
|
|
||||||
|
|
||||||
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)
|
|
||||||
{
|
|
||||||
isFinished = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return isFinished;
|
|
||||||
}
|
|
||||||
public bool IsUserAssigned(int userId, int trainingId)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
bool userHasAssignment = false;
|
|
||||||
|
|
||||||
var assignments = (from a in db.TrainingAssignments where a.TrainingID == trainingId && a.UserID == userId && a.Deleted != true select a).ToList();
|
|
||||||
|
|
||||||
if(assignments.Count() > 0)
|
|
||||||
{
|
|
||||||
userHasAssignment = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return userHasAssignment;
|
|
||||||
}
|
|
||||||
public List<Training> GetTrainings()
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
var trainings = from a in db.Trainings select a;
|
|
||||||
|
|
||||||
return trainings.ToList();
|
|
||||||
}
|
|
||||||
public List<TrainingAssignment> GetTrainingAssignmentsByUserID(int userID)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
var trainingAssignments = from a in db.TrainingAssignments where a.UserID == userID && a.Deleted != true select a;
|
|
||||||
|
|
||||||
return trainingAssignments.ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DeleteTrainingAssignment(int trainingAssignmentId)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
var trainingAssignments = from a in db.TrainingAssignments where a.ID == trainingAssignmentId select a;
|
|
||||||
|
|
||||||
foreach (var item in trainingAssignments)
|
|
||||||
{
|
|
||||||
item.Deleted = true;
|
|
||||||
item.DeletedDate = DateTime.Now;
|
|
||||||
}
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void DeleteTrainingDocAck(int trainingAssignmentId)
|
#else
|
||||||
{
|
throw new NotImplementedException();
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
#endif
|
||||||
var trainingDocAcks = from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentId select a;
|
}
|
||||||
|
|
||||||
foreach (var item in trainingDocAcks)
|
public int GetTrainingIdByAssignment(int trainingAssignmentID) {
|
||||||
{
|
#if !NET8
|
||||||
item.Deleted = true;
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
item.DeletedDate = DateTime.Now;
|
int trainingID = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a.TrainingID).SingleOrDefault();
|
||||||
}
|
|
||||||
try
|
return trainingID;
|
||||||
{
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateTrainingStatus(int trainingId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).SingleOrDefault();
|
||||||
|
|
||||||
|
if (training != null) {
|
||||||
|
training.CompletedDate = DateTime.Now;
|
||||||
|
training.Status = true;
|
||||||
|
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void DeleteTraining(int trainingId)
|
#else
|
||||||
{
|
throw new NotImplementedException();
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
#endif
|
||||||
Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).FirstOrDefault();
|
}
|
||||||
|
|
||||||
|
public void reOpenTraining(int trainingId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).SingleOrDefault();
|
||||||
|
|
||||||
|
if (training != null) {
|
||||||
|
training.CompletedDate = null;
|
||||||
|
training.Status = false;
|
||||||
|
|
||||||
|
try {
|
||||||
|
db.SaveChanges();
|
||||||
|
} catch (InvalidOperationException e) {
|
||||||
|
string exception = e.ToString();
|
||||||
|
Console.WriteLine(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CheckTrainingStatus(int trainingAssignmentID) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
bool isFinished = true;
|
||||||
|
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;
|
||||||
|
|
||||||
|
foreach (var training in trainingAssignments) {
|
||||||
|
if (training.status == false) {
|
||||||
|
isFinished = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return isFinished;
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CheckTrainingAssignmentStatus(int trainingAssignmentID) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
bool isFinished = true;
|
||||||
|
// TrainingDocAck docsAssigned = null;
|
||||||
|
|
||||||
|
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) {
|
||||||
|
isFinished = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return isFinished;
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsUserAssigned(int userId, int trainingId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
bool userHasAssignment = false;
|
||||||
|
|
||||||
|
var assignments = (from a in db.TrainingAssignments where a.TrainingID == trainingId && a.UserID == userId && a.Deleted != true select a).ToList();
|
||||||
|
|
||||||
|
if (assignments.Count() > 0) {
|
||||||
|
userHasAssignment = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return userHasAssignment;
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Training> GetTrainings() {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
var trainings = from a in db.Trainings select a;
|
||||||
|
|
||||||
|
return trainings.ToList();
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<TrainingAssignment> GetTrainingAssignmentsByUserID(int userID) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
var trainingAssignments = from a in db.TrainingAssignments where a.UserID == userID && a.Deleted != true select a;
|
||||||
|
|
||||||
|
return trainingAssignments.ToList();
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteTrainingAssignment(int trainingAssignmentId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
var trainingAssignments = from a in db.TrainingAssignments where a.ID == trainingAssignmentId select a;
|
||||||
|
|
||||||
|
foreach (var item in trainingAssignments) {
|
||||||
|
item.Deleted = true;
|
||||||
|
item.DeletedDate = DateTime.Now;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
db.SaveChanges();
|
||||||
|
} catch (InvalidOperationException e) {
|
||||||
|
string exception = e.ToString();
|
||||||
|
Console.WriteLine(e);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteTrainingDocAck(int trainingAssignmentId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
var trainingDocAcks = from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentId select a;
|
||||||
|
|
||||||
|
foreach (var item in trainingDocAcks) {
|
||||||
|
item.Deleted = true;
|
||||||
|
item.DeletedDate = DateTime.Now;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
db.SaveChanges();
|
||||||
|
} catch (InvalidOperationException e) {
|
||||||
|
string exception = e.ToString();
|
||||||
|
Console.WriteLine(e);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteTraining(int trainingId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
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();
|
|
||||||
db.SaveChanges();
|
|
||||||
foreach (TrainingAssignment trainingAssignment in trainingAssignments)
|
|
||||||
{
|
|
||||||
DeleteTrainingAssignment(trainingAssignment.ID);
|
|
||||||
DeleteTrainingDocAck(trainingAssignment.ID);
|
|
||||||
//db.SaveChanges();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
public void DeleteAssignmentByUserId(int userId)
|
|
||||||
{
|
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
|
||||||
|
|
||||||
var userAssignments = (from a in db.TrainingAssignments where a.UserID == userId select a).ToList();
|
List<TrainingAssignment> trainingAssignments = (from a in db.TrainingAssignments where a.TrainingID == trainingId select a).ToList();
|
||||||
|
db.SaveChanges();
|
||||||
foreach (var item in userAssignments)
|
foreach (TrainingAssignment trainingAssignment in trainingAssignments) {
|
||||||
{
|
DeleteTrainingAssignment(trainingAssignment.ID);
|
||||||
//get document assignments
|
DeleteTrainingDocAck(trainingAssignment.ID);
|
||||||
var docAssignments = (from a in db.TrainingDocAcks where a.TrainingAssignmentID == item.TrainingID select a).ToList();
|
|
||||||
//delete each docAssignment
|
|
||||||
foreach (var docAssignment in docAssignments)
|
|
||||||
{
|
|
||||||
DeleteTrainingDocAck(docAssignment.ID);
|
|
||||||
}
|
|
||||||
DeleteTrainingAssignment(item.ID);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public bool CheckValidDocAck(int docAckId)
|
#else
|
||||||
{
|
throw new NotImplementedException();
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
#endif
|
||||||
TrainingDocAck ack = (from a in db.TrainingDocAcks where a.ID == docAckId select a).FirstOrDefault();
|
}
|
||||||
|
|
||||||
//TODO Check the user is valid
|
public void DeleteAssignmentByUserId(int userId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
|
||||||
//Check that the assignment exists
|
var userAssignments = (from a in db.TrainingAssignments where a.UserID == userId select a).ToList();
|
||||||
if (ack != null)
|
|
||||||
{
|
foreach (var item in userAssignments) {
|
||||||
//Check that the assignment isn't deleted
|
// get document assignments
|
||||||
if (ack.Deleted == true)
|
var docAssignments = (from a in db.TrainingDocAcks where a.TrainingAssignmentID == item.TrainingID select a).ToList();
|
||||||
{
|
// delete each docAssignment
|
||||||
return false;
|
foreach (var docAssignment in docAssignments) {
|
||||||
}
|
DeleteTrainingDocAck(docAssignment.ID);
|
||||||
//Check that the assignment isn't completed
|
|
||||||
else if (ack.Reviewed == true)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
DeleteTrainingAssignment(item.ID);
|
||||||
{
|
}
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CheckValidDocAck(int docAckId) {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
TrainingDocAck ack = (from a in db.TrainingDocAcks where a.ID == docAckId select a).FirstOrDefault();
|
||||||
|
|
||||||
|
// TODO Check the user is valid
|
||||||
|
|
||||||
|
// Check that the assignment exists
|
||||||
|
if (ack != null) {
|
||||||
|
// Check that the assignment isn't deleted
|
||||||
|
if (ack.Deleted == true) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
// Check that the assignment isn't completed
|
||||||
|
else if (ack.Reviewed == true) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
public List<Training> GetAllOpenTrainings()
|
#else
|
||||||
{
|
throw new NotImplementedException();
|
||||||
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
#endif
|
||||||
List<Training> openTrainings = (from a in db.Trainings where a.Status != true && a.Deleted != true select a).ToList();
|
|
||||||
return openTrainings;
|
|
||||||
}
|
|
||||||
public List<TrainingAssignment> GetOpenAssignmentsByTrainingID(int trainingID)
|
|
||||||
{
|
|
||||||
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();
|
|
||||||
return openAssignments;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public List<Training> GetAllOpenTrainings() {
|
||||||
|
#if !NET8
|
||||||
|
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
|
||||||
|
List<Training> openTrainings = (from a in db.Trainings where a.Status != true && a.Deleted != true select a).ToList();
|
||||||
|
return openTrainings;
|
||||||
|
#else
|
||||||
|
throw new NotImplementedException();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<TrainingAssignment> GetOpenAssignmentsByTrainingID(int trainingID) {
|
||||||
|
#if !NET8
|
||||||
|
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();
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
@ -1,212 +1,133 @@
|
|||||||
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();
|
||||||
|
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("ORDER BY FirstName ");
|
||||||
|
|
||||||
public IEnumerable<LoginModel> GetAllUsers()
|
return db.Query<LoginModel>(sql.ToString()).ToList();
|
||||||
{
|
|
||||||
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("FROM Users U LEFT JOIN Users U1 ON U.DelegatedTo = U1.UserID ");
|
|
||||||
sql.Append("ORDER BY FirstName ");
|
|
||||||
|
|
||||||
return this.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 ");
|
|
||||||
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("WHERE U.IsActive = 1 ");
|
|
||||||
sql.Append("ORDER BY FirstName ");
|
|
||||||
|
|
||||||
return this.db.Query<LoginModel>(sql.ToString()).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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 ",
|
|
||||||
new { UserID = userID }).Take(1).SingleOrDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetUserEmailByID(string userID)
|
|
||||||
{
|
|
||||||
return this.db.Query<string>(
|
|
||||||
"SELECT Email FROM Users WHERE UserID = @UserID ",
|
|
||||||
new { UserID = userID }).Take(1).SingleOrDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
internal void UpdateUser(LoginModel model)
|
|
||||||
{
|
|
||||||
string sql;
|
|
||||||
sql = "UPDATE Users SET LoginID = @LoginID, FirstName = @FirstName, LastName = @LastName, Email = @Email, IsActive = @IsActive, IsAdmin = @IsAdmin WHERE UserID = @UserID";
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@UserID", model.UserID);
|
|
||||||
parameters.Add("@LoginID", model.LoginID);
|
|
||||||
parameters.Add("@FirstName", model.FirstName);
|
|
||||||
parameters.Add("@LastName", model.LastName );
|
|
||||||
parameters.Add("@Email", model.Email);
|
|
||||||
parameters.Add("@IsAdmin", model.IsAdmin);
|
|
||||||
parameters.Add("@IsActive", model.IsActive);
|
|
||||||
|
|
||||||
this.db.Execute(sql, parameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
internal void DeleteUser(LoginModel model)
|
|
||||||
{
|
|
||||||
string sql;
|
|
||||||
//sql = "DELETE Users WHERE UserID = @UserID";
|
|
||||||
sql = "UPDATE Users SET IsActive = 0 WHERE UserID = @UserID";
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@UserID", model.UserID);
|
|
||||||
|
|
||||||
this.db.Execute(sql, parameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </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("@LoginID", model.LoginID);
|
|
||||||
parameters.Add("@FirstName", model.FirstName);
|
|
||||||
parameters.Add("@LastName", model.LastName);
|
|
||||||
parameters.Add("@Email", model.Email);
|
|
||||||
parameters.Add("@IsAdmin", model.IsAdmin);
|
|
||||||
|
|
||||||
this.db.Execute("InsertUsers", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
int userid = parameters.Get<int>("@UserID");
|
|
||||||
model.UserID = userid;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </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("@HasITARAccess", hasITARAccess);
|
|
||||||
|
|
||||||
this.db.Execute("ITARAccessUpdateInsert", parameters, commandType: CommandType.StoredProcedure);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userID"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
internal bool GetITARAccess(int userID)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@UserID", userID);
|
|
||||||
|
|
||||||
var results = this.db.Query<string>(
|
|
||||||
"SELECT HasITARAccess FROM SAMUsers, Users WHERE Users.UserID = @UserID AND SAMUsers.UserID = Users.LoginID",
|
|
||||||
parameters, commandType: CommandType.Text);
|
|
||||||
if ((results != null) && (results.Count() > 0) && (results.First() == "1"))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userID"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
internal bool GetEC_AD_Users(string userID)
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
parameters.Add("@UserID", userID);
|
|
||||||
|
|
||||||
var results = this.db.Query<string>(
|
|
||||||
"SELECT UserID FROM EC_AD_Users WHERE UserID = @UserID",
|
|
||||||
parameters, commandType: CommandType.Text);
|
|
||||||
if ((results != null) && (results.Count() > 0))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void ProcessOoO()
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
this.db.Execute("ProcesOOOEnableStatus", commandType: CommandType.StoredProcedure);
|
|
||||||
|
|
||||||
}
|
|
||||||
internal void ExpireOoO()
|
|
||||||
{
|
|
||||||
var parameters = new DynamicParameters();
|
|
||||||
this.db.Execute("ProcesOOOExpiration", commandType: CommandType.StoredProcedure);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
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("FROM Users U LEFT JOIN Users U1 ON U.DelegatedTo = U1.UserID ");
|
||||||
|
sql.Append("WHERE U.IsActive = 1 ");
|
||||||
|
sql.Append("ORDER BY FirstName ");
|
||||||
|
|
||||||
|
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>(
|
||||||
|
"SELECT FirstName + ' ' + LastName AS FullName, * FROM Users WHERE UserID = @UserID ",
|
||||||
|
new { UserID = userID }).Take(1).SingleOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetUserEmailByID(int userID) {
|
||||||
|
return db.Query<string>(
|
||||||
|
"SELECT Email FROM Users WHERE UserID = @UserID ",
|
||||||
|
new { UserID = userID }).Take(1).SingleOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void UpdateUser(LoginModel model) {
|
||||||
|
string sql;
|
||||||
|
sql = "UPDATE Users SET LoginID = @LoginID, FirstName = @FirstName, LastName = @LastName, Email = @Email, IsActive = @IsActive, IsAdmin = @IsAdmin WHERE UserID = @UserID";
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@UserID", model.UserID);
|
||||||
|
parameters.Add("@LoginID", model.LoginID);
|
||||||
|
parameters.Add("@FirstName", model.FirstName);
|
||||||
|
parameters.Add("@LastName", model.LastName);
|
||||||
|
parameters.Add("@Email", model.Email);
|
||||||
|
parameters.Add("@IsAdmin", model.IsAdmin);
|
||||||
|
parameters.Add("@IsActive", model.IsActive);
|
||||||
|
|
||||||
|
db.Execute(sql, parameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void DeleteUser(LoginModel model) {
|
||||||
|
string sql;
|
||||||
|
sql = "UPDATE Users SET IsActive = 0 WHERE UserID = @UserID";
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@UserID", model.UserID);
|
||||||
|
|
||||||
|
db.Execute(sql, parameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void InsertUser(LoginModel model) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@UserID", model.UserID, DbType.Int32, direction: ParameterDirection.InputOutput);
|
||||||
|
parameters.Add("@LoginID", model.LoginID);
|
||||||
|
parameters.Add("@FirstName", model.FirstName);
|
||||||
|
parameters.Add("@LastName", model.LastName);
|
||||||
|
parameters.Add("@Email", model.Email);
|
||||||
|
parameters.Add("@IsAdmin", model.IsAdmin);
|
||||||
|
|
||||||
|
db.Execute("InsertUsers", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
int userid = parameters.Get<int>("@UserID");
|
||||||
|
model.UserID = userid;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void UpdateInsertITARAccess(string userID, string hasITARAccess) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@UserID", userID);
|
||||||
|
parameters.Add("@HasITARAccess", hasITARAccess);
|
||||||
|
|
||||||
|
db.Execute("ITARAccessUpdateInsert", parameters, commandType: CommandType.StoredProcedure);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal bool GetITARAccess(int userID) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@UserID", userID);
|
||||||
|
|
||||||
|
var results = db.Query<string>(
|
||||||
|
"SELECT HasITARAccess FROM SAMUsers, Users WHERE Users.UserID = @UserID AND SAMUsers.UserID = Users.LoginID",
|
||||||
|
parameters, commandType: CommandType.Text);
|
||||||
|
if ((results != null) && (results.Count() > 0) && (results.First() == "1"))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal bool GetEC_AD_Users(string userID) {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
parameters.Add("@UserID", userID);
|
||||||
|
|
||||||
|
var results = db.Query<string>(
|
||||||
|
"SELECT UserID FROM EC_AD_Users WHERE UserID = @UserID",
|
||||||
|
parameters, commandType: CommandType.Text);
|
||||||
|
if ((results != null) && (results.Count() > 0))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void ProcessOoO() {
|
||||||
|
DynamicParameters parameters = new();
|
||||||
|
db.Execute("ProcesOOOEnableStatus", 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
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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/>
|
||||||
|
@ -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/>
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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/>
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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!
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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
Reference in New Issue
Block a user