Pull Request 33523 suggestions
Pull Request 33520 suggestions Injected AppSettings instead of using GetEnvironmentVariable at Services level When debugging only app.Services.GetRequiredService<IPCRBService>(); Get ready to use VSCode IDE Align .editorconfig files
This commit is contained in:
parent
08fcd985ea
commit
7be540964a
@ -19,7 +19,7 @@ insert_final_newline = false
|
|||||||
|
|
||||||
# Organize usings
|
# Organize usings
|
||||||
dotnet_separate_import_directive_groups = true
|
dotnet_separate_import_directive_groups = true
|
||||||
dotnet_sort_system_directives_first = false
|
dotnet_sort_system_directives_first = true
|
||||||
file_header_template = unset
|
file_header_template = unset
|
||||||
|
|
||||||
# this. and Me. preferences
|
# this. and Me. preferences
|
||||||
@ -249,4 +249,39 @@ dotnet_style_operator_placement_when_wrapping = beginning_of_line
|
|||||||
tab_width = 4
|
tab_width = 4
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
end_of_line = crlf
|
end_of_line = crlf
|
||||||
dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion
|
dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion
|
||||||
|
|
||||||
|
# Question
|
||||||
|
|
||||||
|
csharp_style_inlined_variable_declaration = false
|
||||||
|
csharp_style_prefer_primary_constructors = false
|
||||||
|
dotnet_diagnostic.CA1510.severity = none # "Use 'ArgumentNullException.ThrowIfNull' instead of explicitly throwing a new exception instance
|
||||||
|
dotnet_diagnostic.CA1806.severity = none # SendEmailWithValidArgsShouldSendMailThroughClient calls TryParse but does not explicitly
|
||||||
|
dotnet_diagnostic.CA1827.severity = none # Count() is used where Any() could be used instead to improve performance
|
||||||
|
dotnet_diagnostic.CA1829.severity = none # Use the property instead of Enumerable.Count()
|
||||||
|
dotnet_diagnostic.CA1860.severity = none # Prefer comparing 'Count' to 0 rather than using 'Any()', both for clarity and for performance
|
||||||
|
dotnet_diagnostic.CA2208.severity = none # Method .ctor passes
|
||||||
|
dotnet_diagnostic.CA2208.severity = none # Method .ctor passes
|
||||||
|
dotnet_diagnostic.CA2211.severity = none # Non-constant fields should not be visible
|
||||||
|
dotnet_diagnostic.CA2253.severity = none # Named placeholders in the logging message template should not be comprised
|
||||||
|
dotnet_diagnostic.CA2254.severity = none # The logging message template should not vary between calls to
|
||||||
|
dotnet_diagnostic.CS1998.severity = none # This async method lacks 'await' operators and will run synchronously
|
||||||
|
dotnet_diagnostic.CS8618.severity = none # Non-nullable field '_mockDalService' must contain a non-null value when exiting constructor
|
||||||
|
dotnet_diagnostic.CS8625.severity = none # Cannot convert null literal to non-nullable reference type
|
||||||
|
dotnet_diagnostic.IDE0005.severity = none # Using directive is unnecessary.
|
||||||
|
dotnet_diagnostic.IDE0017.severity = none # Object initialization can be simplified
|
||||||
|
dotnet_diagnostic.IDE0018.severity = none # Variable declaration can be inlined
|
||||||
|
dotnet_diagnostic.IDE0028.severity = none # Collection initialization can be simplified
|
||||||
|
dotnet_diagnostic.IDE0044.severity = none # Make field readonly
|
||||||
|
dotnet_diagnostic.IDE0046.severity = none # 'if' statement can be simplified
|
||||||
|
dotnet_diagnostic.IDE0052.severity = none # "Private member can be removed
|
||||||
|
dotnet_diagnostic.IDE0270.severity = none # Null check can be simplified
|
||||||
|
dotnet_diagnostic.IDE0290.severity = none # Use primary constructor
|
||||||
|
dotnet_diagnostic.IDE1006.severity = none # Naming rule violation: These words must begin with upper case characters
|
||||||
|
dotnet_diagnostic.IDE2000.severity = error # IDE2000: Allow multiple blank lines
|
||||||
|
dotnet_diagnostic.NUnit2001.severity = none # Consider using the constraint model, Assert.That(expr, Is.False), instead of the classic model
|
||||||
|
dotnet_diagnostic.NUnit2004.severity = none # Consider using the constraint model
|
||||||
|
dotnet_diagnostic.NUnit2010.severity = none # Use Is.EqualTo constraint instead of direct comparison for better assertion messages in ca
|
||||||
|
dotnet_style_coalesce_expression = false
|
||||||
|
dotnet_style_object_initializer = false
|
||||||
|
dotnet_style_prefer_conditional_expression_over_return = false
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -2,4 +2,7 @@
|
|||||||
bin
|
bin
|
||||||
obj
|
obj
|
||||||
TestResults
|
TestResults
|
||||||
Properties
|
Properties
|
||||||
|
|
||||||
|
/FabApprovalWorkerService/.vscode/.UserSecrets
|
||||||
|
/FabApprovalWorkerServiceTests/.vscode/.UserSecrets
|
1
.vscode/format-report.json
vendored
Normal file
1
.vscode/format-report.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[]
|
30
.vscode/launch.json
vendored
Normal file
30
.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": "FabApprovalWorkerService-build",
|
||||||
|
"program": "${workspaceFolder}/FabApprovalWorkerService/bin/Debug/net8.0/win-x64/FabApprovalWorkerServiceTests.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"
|
||||||
|
]
|
||||||
|
}
|
1
.vscode/spell.md
vendored
Normal file
1
.vscode/spell.md
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
# Spell
|
239
.vscode/tasks.json
vendored
Normal file
239
.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerService-User Secrets Init",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"user-secrets",
|
||||||
|
"-p",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerService/FabApprovalWorkerService.csproj",
|
||||||
|
"init"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerService-User Secrets Set",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"user-secrets",
|
||||||
|
"-p",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerService/FabApprovalWorkerService.csproj",
|
||||||
|
"set",
|
||||||
|
"_UserSecretsId",
|
||||||
|
"0c43f9aa-96e9-4298-967c-ed069d79e262"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerService-Format",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"format",
|
||||||
|
"--report",
|
||||||
|
".vscode",
|
||||||
|
"--verbosity",
|
||||||
|
"detailed",
|
||||||
|
"--severity",
|
||||||
|
"warn"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerService-Format-Whitespaces",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"format",
|
||||||
|
"whitespace"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerService-build",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerService/FabApprovalWorkerService.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerService-publish",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"publish",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerService/FabApprovalWorkerService.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerService-watch",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"watch",
|
||||||
|
"run",
|
||||||
|
"--project",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerService/FabApprovalWorkerService.csproj"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerService-Publish AOT",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"publish",
|
||||||
|
"-r",
|
||||||
|
"win-x64",
|
||||||
|
"-c",
|
||||||
|
"Release",
|
||||||
|
"-p:PublishAot=true",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerService/FabApprovalWorkerService.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerServiceTests-User Secrets Init",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"user-secrets",
|
||||||
|
"-p",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"init"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerServiceTests-User Secrets Set",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"user-secrets",
|
||||||
|
"-p",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"set",
|
||||||
|
"_UserSecretsId",
|
||||||
|
"f445e6e0-784b-4dde-9ef0-2143e6e90b1b"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerServiceTests-Format",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"format",
|
||||||
|
"--report",
|
||||||
|
".vscode",
|
||||||
|
"--verbosity",
|
||||||
|
"detailed",
|
||||||
|
"--severity",
|
||||||
|
"warn"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerServiceTests-Format-Whitespaces",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"format",
|
||||||
|
"whitespace"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerServiceTests-build",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerServiceTests-testDebug",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerServiceTests-testRelease",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary",
|
||||||
|
"-c",
|
||||||
|
"Release"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerServiceTests-publish",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"publish",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerServiceTests-watch",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"watch",
|
||||||
|
"run",
|
||||||
|
"--project",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests/FabApprovalWorkerServiceTests.csproj"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "FabApprovalWorkerServiceTests-Publish AOT",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"publish",
|
||||||
|
"-r",
|
||||||
|
"win-x64",
|
||||||
|
"-c",
|
||||||
|
"Release",
|
||||||
|
"-p:PublishAot=true",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
287
FabApprovalWorkerService/.editorconfig
Normal file
287
FabApprovalWorkerService/.editorconfig
Normal file
@ -0,0 +1,287 @@
|
|||||||
|
# Remove the line below if you want to inherit .editorconfig settings from higher directories
|
||||||
|
root = true
|
||||||
|
|
||||||
|
# C# files
|
||||||
|
[*.cs]
|
||||||
|
|
||||||
|
#### Core EditorConfig Options ####
|
||||||
|
|
||||||
|
# Indentation and spacing
|
||||||
|
indent_size = 4
|
||||||
|
indent_style = space
|
||||||
|
tab_width = 4
|
||||||
|
|
||||||
|
# New line preferences
|
||||||
|
end_of_line = crlf
|
||||||
|
insert_final_newline = false
|
||||||
|
|
||||||
|
#### .NET Coding Conventions ####
|
||||||
|
|
||||||
|
# Organize usings
|
||||||
|
dotnet_separate_import_directive_groups = true
|
||||||
|
dotnet_sort_system_directives_first = true
|
||||||
|
file_header_template = unset
|
||||||
|
|
||||||
|
# this. and Me. preferences
|
||||||
|
dotnet_style_qualification_for_event = false
|
||||||
|
dotnet_style_qualification_for_field = false
|
||||||
|
dotnet_style_qualification_for_method = false
|
||||||
|
dotnet_style_qualification_for_property = false
|
||||||
|
|
||||||
|
# Language keywords vs BCL types preferences
|
||||||
|
dotnet_style_predefined_type_for_locals_parameters_members = true
|
||||||
|
dotnet_style_predefined_type_for_member_access = true
|
||||||
|
|
||||||
|
# Parentheses preferences
|
||||||
|
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:error
|
||||||
|
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:error
|
||||||
|
dotnet_style_parentheses_in_other_operators = never_if_unnecessary
|
||||||
|
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:error
|
||||||
|
|
||||||
|
# Modifier preferences
|
||||||
|
dotnet_style_require_accessibility_modifiers = for_non_interface_members
|
||||||
|
|
||||||
|
# Expression-level preferences
|
||||||
|
dotnet_style_coalesce_expression = true
|
||||||
|
dotnet_style_collection_initializer = true
|
||||||
|
dotnet_style_explicit_tuple_names = true
|
||||||
|
dotnet_style_namespace_match_folder = true
|
||||||
|
dotnet_style_null_propagation = true
|
||||||
|
dotnet_style_object_initializer = true
|
||||||
|
dotnet_style_operator_placement_when_wrapping = beginning_of_line
|
||||||
|
dotnet_style_prefer_auto_properties = true
|
||||||
|
dotnet_style_prefer_collection_expression = when_types_loosely_match
|
||||||
|
dotnet_style_prefer_compound_assignment = true
|
||||||
|
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
|
||||||
|
dotnet_style_prefer_conditional_expression_over_return = true:suggestion
|
||||||
|
dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed
|
||||||
|
dotnet_style_prefer_inferred_anonymous_type_member_names = true
|
||||||
|
dotnet_style_prefer_inferred_tuple_names = true
|
||||||
|
dotnet_style_prefer_is_null_check_over_reference_equality_method = true
|
||||||
|
dotnet_style_prefer_simplified_boolean_expressions = true
|
||||||
|
dotnet_style_prefer_simplified_interpolation = true
|
||||||
|
|
||||||
|
# Field preferences
|
||||||
|
dotnet_style_readonly_field = true
|
||||||
|
|
||||||
|
# Parameter preferences
|
||||||
|
dotnet_code_quality_unused_parameters = all:error
|
||||||
|
|
||||||
|
# Suppression preferences
|
||||||
|
dotnet_remove_unnecessary_suppression_exclusions = none
|
||||||
|
|
||||||
|
# New line preferences
|
||||||
|
dotnet_style_allow_multiple_blank_lines_experimental = false:error
|
||||||
|
dotnet_style_allow_statement_immediately_after_block_experimental = false:warning
|
||||||
|
|
||||||
|
#### C# Coding Conventions ####
|
||||||
|
|
||||||
|
# var preferences
|
||||||
|
csharp_style_var_elsewhere = false:error
|
||||||
|
csharp_style_var_for_built_in_types = false:error
|
||||||
|
csharp_style_var_when_type_is_apparent = false:error
|
||||||
|
|
||||||
|
# Expression-bodied members
|
||||||
|
csharp_style_expression_bodied_accessors = true:silent
|
||||||
|
csharp_style_expression_bodied_constructors = false:silent
|
||||||
|
csharp_style_expression_bodied_indexers = true:silent
|
||||||
|
csharp_style_expression_bodied_lambdas = true:silent
|
||||||
|
csharp_style_expression_bodied_local_functions = false:silent
|
||||||
|
csharp_style_expression_bodied_methods = false:silent
|
||||||
|
csharp_style_expression_bodied_operators = false:silent
|
||||||
|
csharp_style_expression_bodied_properties = true:silent
|
||||||
|
|
||||||
|
# Pattern matching preferences
|
||||||
|
csharp_style_pattern_matching_over_as_with_null_check = true
|
||||||
|
csharp_style_pattern_matching_over_is_with_cast_check = true
|
||||||
|
csharp_style_prefer_extended_property_pattern = true
|
||||||
|
csharp_style_prefer_not_pattern = true
|
||||||
|
csharp_style_prefer_pattern_matching = true
|
||||||
|
csharp_style_prefer_switch_expression = true
|
||||||
|
|
||||||
|
# Null-checking preferences
|
||||||
|
csharp_style_conditional_delegate_call = true
|
||||||
|
|
||||||
|
# Modifier preferences
|
||||||
|
csharp_prefer_static_local_function = false
|
||||||
|
csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async
|
||||||
|
csharp_style_prefer_readonly_struct = true:warning
|
||||||
|
csharp_style_prefer_readonly_struct_member = true
|
||||||
|
|
||||||
|
# Code-block preferences
|
||||||
|
csharp_prefer_braces = true:silent
|
||||||
|
csharp_prefer_simple_using_statement = false:suggestion
|
||||||
|
csharp_style_namespace_declarations = file_scoped:error
|
||||||
|
csharp_style_prefer_method_group_conversion = true:suggestion
|
||||||
|
csharp_style_prefer_primary_constructors = true:suggestion
|
||||||
|
csharp_style_prefer_top_level_statements = true:error
|
||||||
|
|
||||||
|
# Expression-level preferences
|
||||||
|
csharp_prefer_simple_default_expression = true
|
||||||
|
csharp_style_deconstructed_variable_declaration = false:suggestion
|
||||||
|
csharp_style_implicit_object_creation_when_type_is_apparent = false
|
||||||
|
csharp_style_inlined_variable_declaration = true:suggestion
|
||||||
|
csharp_style_prefer_index_operator = false:error
|
||||||
|
csharp_style_prefer_local_over_anonymous_function = true:error
|
||||||
|
csharp_style_prefer_null_check_over_type_check = true
|
||||||
|
csharp_style_prefer_range_operator = false:error
|
||||||
|
csharp_style_prefer_tuple_swap = true
|
||||||
|
csharp_style_prefer_utf8_string_literals = true
|
||||||
|
csharp_style_throw_expression = true
|
||||||
|
csharp_style_unused_value_assignment_preference = unused_local_variable
|
||||||
|
csharp_style_unused_value_expression_statement_preference = unused_local_variable
|
||||||
|
|
||||||
|
# 'using' directive preferences
|
||||||
|
csharp_using_directive_placement = outside_namespace:error
|
||||||
|
|
||||||
|
# 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:error
|
||||||
|
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
|
||||||
|
|
||||||
|
# Indentation preferences
|
||||||
|
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
|
||||||
|
|
||||||
|
# Space preferences
|
||||||
|
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
|
||||||
|
|
||||||
|
# Wrapping preferences
|
||||||
|
csharp_preserve_single_line_blocks = true
|
||||||
|
csharp_preserve_single_line_statements = true
|
||||||
|
|
||||||
|
#### Naming styles ####
|
||||||
|
|
||||||
|
# Naming rules
|
||||||
|
|
||||||
|
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
|
||||||
|
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
|
||||||
|
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
|
||||||
|
|
||||||
|
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
|
||||||
|
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
|
||||||
|
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
|
||||||
|
|
||||||
|
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
|
||||||
|
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
|
||||||
|
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
|
||||||
|
|
||||||
|
# Symbol specifications
|
||||||
|
|
||||||
|
dotnet_naming_symbols.interface.applicable_kinds = interface
|
||||||
|
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||||
|
dotnet_naming_symbols.interface.required_modifiers =
|
||||||
|
|
||||||
|
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
|
||||||
|
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||||
|
dotnet_naming_symbols.types.required_modifiers =
|
||||||
|
|
||||||
|
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
|
||||||
|
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||||
|
dotnet_naming_symbols.non_field_members.required_modifiers =
|
||||||
|
|
||||||
|
# Naming styles
|
||||||
|
|
||||||
|
dotnet_naming_style.pascal_case.required_prefix =
|
||||||
|
dotnet_naming_style.pascal_case.required_suffix =
|
||||||
|
dotnet_naming_style.pascal_case.word_separator =
|
||||||
|
dotnet_naming_style.pascal_case.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.begins_with_i.capitalization = pascal_case
|
||||||
|
|
||||||
|
[*.{cs,vb}]
|
||||||
|
dotnet_style_coalesce_expression = true:suggestion
|
||||||
|
dotnet_style_null_propagation = true:suggestion
|
||||||
|
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
|
||||||
|
dotnet_style_prefer_auto_properties = true:silent
|
||||||
|
dotnet_style_object_initializer = true:suggestion
|
||||||
|
dotnet_style_collection_initializer = true:suggestion
|
||||||
|
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
|
||||||
|
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
|
||||||
|
dotnet_style_prefer_conditional_expression_over_return = true:suggestion
|
||||||
|
dotnet_style_explicit_tuple_names = true:suggestion
|
||||||
|
dotnet_style_prefer_inferred_tuple_names = true:suggestion
|
||||||
|
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
|
||||||
|
dotnet_style_prefer_compound_assignment = true:suggestion
|
||||||
|
dotnet_style_prefer_simplified_interpolation = true:suggestion
|
||||||
|
dotnet_style_operator_placement_when_wrapping = beginning_of_line
|
||||||
|
tab_width = 4
|
||||||
|
indent_size = 4
|
||||||
|
end_of_line = crlf
|
||||||
|
dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion
|
||||||
|
|
||||||
|
# Question
|
||||||
|
|
||||||
|
csharp_style_inlined_variable_declaration = false
|
||||||
|
csharp_style_prefer_primary_constructors = false
|
||||||
|
dotnet_diagnostic.CA1510.severity = none # "Use 'ArgumentNullException.ThrowIfNull' instead of explicitly throwing a new exception instance
|
||||||
|
dotnet_diagnostic.CA1806.severity = none # SendEmailWithValidArgsShouldSendMailThroughClient calls TryParse but does not explicitly
|
||||||
|
dotnet_diagnostic.CA1827.severity = none # Count() is used where Any() could be used instead to improve performance
|
||||||
|
dotnet_diagnostic.CA1829.severity = none # Use the property instead of Enumerable.Count()
|
||||||
|
dotnet_diagnostic.CA1860.severity = none # Prefer comparing 'Count' to 0 rather than using 'Any()', both for clarity and for performance
|
||||||
|
dotnet_diagnostic.CA2208.severity = none # Method .ctor passes
|
||||||
|
dotnet_diagnostic.CA2208.severity = none # Method .ctor passes
|
||||||
|
dotnet_diagnostic.CA2211.severity = none # Non-constant fields should not be visible
|
||||||
|
dotnet_diagnostic.CA2253.severity = none # Named placeholders in the logging message template should not be comprised
|
||||||
|
dotnet_diagnostic.CA2254.severity = none # The logging message template should not vary between calls to
|
||||||
|
dotnet_diagnostic.CS1998.severity = none # This async method lacks 'await' operators and will run synchronously
|
||||||
|
dotnet_diagnostic.CS8618.severity = none # Non-nullable field '_mockDalService' must contain a non-null value when exiting constructor
|
||||||
|
dotnet_diagnostic.CS8625.severity = none # Cannot convert null literal to non-nullable reference type
|
||||||
|
dotnet_diagnostic.IDE0005.severity = none # Using directive is unnecessary.
|
||||||
|
dotnet_diagnostic.IDE0017.severity = none # Object initialization can be simplified
|
||||||
|
dotnet_diagnostic.IDE0018.severity = none # Variable declaration can be inlined
|
||||||
|
dotnet_diagnostic.IDE0028.severity = none # Collection initialization can be simplified
|
||||||
|
dotnet_diagnostic.IDE0044.severity = none # Make field readonly
|
||||||
|
dotnet_diagnostic.IDE0046.severity = none # 'if' statement can be simplified
|
||||||
|
dotnet_diagnostic.IDE0052.severity = none # "Private member can be removed
|
||||||
|
dotnet_diagnostic.IDE0270.severity = none # Null check can be simplified
|
||||||
|
dotnet_diagnostic.IDE0290.severity = none # Use primary constructor
|
||||||
|
dotnet_diagnostic.IDE1006.severity = none # Naming rule violation: These words must begin with upper case characters
|
||||||
|
dotnet_diagnostic.IDE2000.severity = error # IDE2000: Allow multiple blank lines
|
||||||
|
dotnet_diagnostic.NUnit2001.severity = none # Consider using the constraint model, Assert.That(expr, Is.False), instead of the classic model
|
||||||
|
dotnet_diagnostic.NUnit2004.severity = none # Consider using the constraint model
|
||||||
|
dotnet_diagnostic.NUnit2010.severity = none # Use Is.EqualTo constraint instead of direct comparison for better assertion messages in ca
|
||||||
|
dotnet_style_coalesce_expression = false
|
||||||
|
dotnet_style_object_initializer = false
|
||||||
|
dotnet_style_prefer_conditional_expression_over_return = false
|
1
FabApprovalWorkerService/.vscode/format-report.json
vendored
Normal file
1
FabApprovalWorkerService/.vscode/format-report.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[]
|
30
FabApprovalWorkerService/.vscode/launch.json
vendored
Normal file
30
FabApprovalWorkerService/.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/FabApprovalWorkerService.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
FabApprovalWorkerService/.vscode/settings.json
vendored
Normal file
424
FabApprovalWorkerService/.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
FabApprovalWorkerService/.vscode/tasks.json
vendored
Normal file
109
FabApprovalWorkerService/.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}/FabApprovalWorkerService.csproj",
|
||||||
|
"init"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "User Secrets Set",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"user-secrets",
|
||||||
|
"-p",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerService.csproj",
|
||||||
|
"set",
|
||||||
|
"_UserSecretsId",
|
||||||
|
"e76dda63-1df3-422a-b758-1c057e5b1e25"
|
||||||
|
],
|
||||||
|
"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}/FabApprovalWorkerService.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "publish",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"publish",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerService.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "watch",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"watch",
|
||||||
|
"run",
|
||||||
|
"--project",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerService.csproj"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Publish AOT",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"publish",
|
||||||
|
"-r",
|
||||||
|
"win-x64",
|
||||||
|
"-c",
|
||||||
|
"Release",
|
||||||
|
"-p:PublishAot=true",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerService.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -17,4 +17,4 @@ public class SmtpClientWrapper : ISmtpClientWrapper {
|
|||||||
public void Send(MailMessage message) {
|
public void Send(MailMessage message) {
|
||||||
_client.Send(message);
|
_client.Send(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,7 +4,7 @@
|
|||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<UserSecretsId>dotnet-FabApprovalWorkerService-e76dda63-1df3-422a-b758-1c057e5b1e25</UserSecretsId>
|
<UserSecretsId>e76dda63-1df3-422a-b758-1c057e5b1e25</UserSecretsId>
|
||||||
<ServerGarbageCollection>true</ServerGarbageCollection>
|
<ServerGarbageCollection>true</ServerGarbageCollection>
|
||||||
<EnforceCodeStyleInBuild>True</EnforceCodeStyleInBuild>
|
<EnforceCodeStyleInBuild>True</EnforceCodeStyleInBuild>
|
||||||
<Configurations>Debug;Release;Staging</Configurations>
|
<Configurations>Debug;Release;Staging</Configurations>
|
||||||
@ -34,6 +34,7 @@
|
|||||||
<PackageReference Include="Infineon.Monitoring.MonA" Version="3.0.1" />
|
<PackageReference Include="Infineon.Monitoring.MonA" Version="3.0.1" />
|
||||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.0" />
|
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.0" />
|
||||||
<PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.2" />
|
<PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.2" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.0" />
|
||||||
|
133
FabApprovalWorkerService/Models/AppSettings.cs
Normal file
133
FabApprovalWorkerService/Models/AppSettings.cs
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace FabApprovalWorkerService.Models;
|
||||||
|
|
||||||
|
public record AppSettings(string AsmHtrTrainingGroupName,
|
||||||
|
string CleansTrainingGroupName,
|
||||||
|
string EpiProTrainingGroupName,
|
||||||
|
string BaseUrl,
|
||||||
|
string Company,
|
||||||
|
string DbConnectionString,
|
||||||
|
string EnvironmentName,
|
||||||
|
bool ShouldSendEmail,
|
||||||
|
string WorkerServiceMonInResource,
|
||||||
|
string FqaTrainingGroupName,
|
||||||
|
string MonInSite,
|
||||||
|
string NewBaseUrl,
|
||||||
|
string OldBaseUrl,
|
||||||
|
string PackagingAndLabelingTrainingGroupName,
|
||||||
|
string SiProductionTrainingGroupName,
|
||||||
|
string UserCertificationRecordsFilePath,
|
||||||
|
string WorkingDirectoryName) {
|
||||||
|
|
||||||
|
public override string ToString() {
|
||||||
|
string result = JsonSerializer.Serialize(this, AppSettingsSourceGenerationContext.Default.AppSettings);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AppSettings Get(IConfigurationRoot configurationRoot) {
|
||||||
|
AppSettings? result;
|
||||||
|
try {
|
||||||
|
#pragma warning disable IL3050, IL2026
|
||||||
|
result = configurationRoot.Get<AppSettings>() ?? throw new Exception();
|
||||||
|
#pragma warning restore IL3050, IL2026
|
||||||
|
} catch (Exception) {
|
||||||
|
List<string> paths = [];
|
||||||
|
foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) {
|
||||||
|
if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider)
|
||||||
|
continue;
|
||||||
|
if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider)
|
||||||
|
continue;
|
||||||
|
paths.Add(physicalFileProvider.Root);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void SetEnvironmentVariables(HostApplicationBuilder builder) {
|
||||||
|
builder.Configuration.AddUserSecrets<Program>();
|
||||||
|
AppSettings appSettings = Get(builder.Configuration);
|
||||||
|
Environment.SetEnvironmentVariable("AsmHtrTrainingGroupName", appSettings.AsmHtrTrainingGroupName);
|
||||||
|
Environment.SetEnvironmentVariable("CleansTrainingGroupName", appSettings.CleansTrainingGroupName);
|
||||||
|
Environment.SetEnvironmentVariable("EpiProTrainingGroupName", appSettings.EpiProTrainingGroupName);
|
||||||
|
Environment.SetEnvironmentVariable("FabApprovalBaseUrl", appSettings.BaseUrl);
|
||||||
|
Environment.SetEnvironmentVariable("FabApprovalDbConnectionString", appSettings.DbConnectionString);
|
||||||
|
Environment.SetEnvironmentVariable("FabApprovalEnvironmentName", appSettings.EnvironmentName);
|
||||||
|
Environment.SetEnvironmentVariable("FabApprovalShouldSendEmail", appSettings.ShouldSendEmail.ToString());
|
||||||
|
Environment.SetEnvironmentVariable("FabApprovalWorkerServiceMonInResource", appSettings.WorkerServiceMonInResource);
|
||||||
|
Environment.SetEnvironmentVariable("FqaTrainingGroupName", appSettings.FqaTrainingGroupName);
|
||||||
|
Environment.SetEnvironmentVariable("MonInSite", appSettings.MonInSite);
|
||||||
|
Environment.SetEnvironmentVariable("NewFabApprovalBaseUrl", appSettings.NewBaseUrl);
|
||||||
|
Environment.SetEnvironmentVariable("OldFabApprovalUrl", appSettings.OldBaseUrl);
|
||||||
|
Environment.SetEnvironmentVariable("PackagingAndLabelingTrainingGroupName", appSettings.PackagingAndLabelingTrainingGroupName);
|
||||||
|
Environment.SetEnvironmentVariable("SiProductionTrainingGroupName", appSettings.SiProductionTrainingGroupName);
|
||||||
|
Environment.SetEnvironmentVariable("UserCertificationRecordsFilePath", appSettings.UserCertificationRecordsFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static AppSettings LoadEnvironmentVariables() {
|
||||||
|
AppSettings result;
|
||||||
|
try {
|
||||||
|
string asmHtrTrainingGroupName = Environment.GetEnvironmentVariable("AsmHtrTrainingGroupName") ??
|
||||||
|
throw new ArgumentNullException("AsmHtrTrainingGroupName environment variable not found");
|
||||||
|
string cleansTrainingGroupName = Environment.GetEnvironmentVariable("CleansTrainingGroupName") ??
|
||||||
|
throw new ArgumentNullException("CleansTrainingGroupName environment variable not found");
|
||||||
|
string epiProTrainingGroupName = Environment.GetEnvironmentVariable("EpiProTrainingGroupName") ??
|
||||||
|
throw new ArgumentNullException("EpiProTrainingGroupName environment variable not found");
|
||||||
|
string baseUrl = Environment.GetEnvironmentVariable("FabApprovalBaseUrl") ??
|
||||||
|
throw new ArgumentNullException("FabApprovalBaseUrl environment variable not found");
|
||||||
|
string dbConnectionString = Environment.GetEnvironmentVariable("FabApprovalDbConnectionString") ??
|
||||||
|
throw new ArgumentNullException("FabApprovalDbConnectionString environment variable not found");
|
||||||
|
string environmentName = Environment.GetEnvironmentVariable("FabApprovalEnvironmentName") ??
|
||||||
|
throw new ArgumentNullException("FabApprovalEnvironmentName environment variable not found");
|
||||||
|
if (!bool.TryParse(Environment.GetEnvironmentVariable("FabApprovalShouldSendEmail"), out bool shouldSendEmail))
|
||||||
|
throw new ArgumentNullException("FabApprovalShouldSendEmail environment variable not found");
|
||||||
|
string workerServiceMonInResource = Environment.GetEnvironmentVariable("FabApprovalWorkerServiceMonInResource") ??
|
||||||
|
throw new ArgumentNullException("FabApprovalWorkerServiceMonInResource environment variable not found");
|
||||||
|
string fqaTrainingGroupName = Environment.GetEnvironmentVariable("FqaTrainingGroupName") ??
|
||||||
|
throw new ArgumentNullException("FqaTrainingGroupName environment variable not found");
|
||||||
|
string monInSite = Environment.GetEnvironmentVariable("MonInSite") ??
|
||||||
|
throw new ArgumentNullException("MonInSite environment variable not found");
|
||||||
|
string newBaseUrl = Environment.GetEnvironmentVariable("NewFabApprovalBaseUrl") ??
|
||||||
|
throw new ArgumentNullException("NewFabApprovalBaseUrl environment variable not found");
|
||||||
|
string oldBaseUrl = Environment.GetEnvironmentVariable("OldFabApprovalUrl") ??
|
||||||
|
throw new ArgumentNullException("OldFabApprovalUrl environment variable not found");
|
||||||
|
string packagingAndLabelingTrainingGroupName = Environment.GetEnvironmentVariable("PackagingAndLabelingTrainingGroupName") ??
|
||||||
|
throw new ArgumentNullException("PackagingAndLabelingTrainingGroupName environment variable not found");
|
||||||
|
string siProductionTrainingGroupName = Environment.GetEnvironmentVariable("SiProductionTrainingGroupName") ??
|
||||||
|
throw new ArgumentNullException("SiProductionTrainingGroupName environment variable not found");
|
||||||
|
string userCertificationRecordsFilePath = Environment.GetEnvironmentVariable("UserCertificationRecordsFilePath") ??
|
||||||
|
throw new ArgumentNullException("UserCertificationRecordsFilePath environment variable not found");
|
||||||
|
result = new(AsmHtrTrainingGroupName: asmHtrTrainingGroupName,
|
||||||
|
CleansTrainingGroupName: cleansTrainingGroupName,
|
||||||
|
EpiProTrainingGroupName: epiProTrainingGroupName,
|
||||||
|
BaseUrl: baseUrl,
|
||||||
|
Company: "Infineon Technologies Americas Corp.",
|
||||||
|
DbConnectionString: dbConnectionString,
|
||||||
|
EnvironmentName: environmentName,
|
||||||
|
ShouldSendEmail: shouldSendEmail,
|
||||||
|
WorkerServiceMonInResource: workerServiceMonInResource,
|
||||||
|
FqaTrainingGroupName: fqaTrainingGroupName,
|
||||||
|
MonInSite: monInSite,
|
||||||
|
NewBaseUrl: newBaseUrl,
|
||||||
|
OldBaseUrl: oldBaseUrl,
|
||||||
|
PackagingAndLabelingTrainingGroupName: packagingAndLabelingTrainingGroupName,
|
||||||
|
SiProductionTrainingGroupName: siProductionTrainingGroupName,
|
||||||
|
UserCertificationRecordsFilePath: userCertificationRecordsFilePath,
|
||||||
|
WorkingDirectoryName: "IFXApps");
|
||||||
|
} catch (Exception ex) {
|
||||||
|
NLog.LogManager.GetCurrentClassLogger().Error($"Unable to load environment variables, because {ex.Message}");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(AppSettings))]
|
||||||
|
internal partial class AppSettingsSourceGenerationContext : JsonSerializerContext {
|
||||||
|
}
|
@ -19,4 +19,4 @@ public class Approval {
|
|||||||
public int Step { get; set; } = 1;
|
public int Step { get; set; } = 1;
|
||||||
public string SubRoleCategoryItem { get; set; } = "";
|
public string SubRoleCategoryItem { get; set; } = "";
|
||||||
public int TaskID { get; set; }
|
public int TaskID { get; set; }
|
||||||
}
|
}
|
@ -1,10 +1,10 @@
|
|||||||
namespace FabApprovalWorkerService.Models;
|
namespace FabApprovalWorkerService.Models;
|
||||||
|
|
||||||
public class CorrectiveAction {
|
public class CorrectiveAction {
|
||||||
public required int CANo { get; set; }
|
public required int CANo { get; set; }
|
||||||
public bool ApprovalStatus { get; set; }
|
public bool ApprovalStatus { get; set; }
|
||||||
public DateTime FollowUpDate { get; set; }
|
public DateTime FollowUpDate { get; set; }
|
||||||
public DateTime ClosedDate { get; set; }
|
public DateTime ClosedDate { get; set; }
|
||||||
public int QAID { get; set; }
|
public int QAID { get; set; }
|
||||||
public required string CATitle { get; set; }
|
public required string CATitle { get; set; }
|
||||||
}
|
}
|
@ -12,4 +12,4 @@ public class ECN {
|
|||||||
public required int OriginatorID { get; set; }
|
public required int OriginatorID { get; set; }
|
||||||
public required string Title { get; set; }
|
public required string Title { get; set; }
|
||||||
public DateTime CloseDate { get; set; } = DateTime.MaxValue;
|
public DateTime CloseDate { get; set; } = DateTime.MaxValue;
|
||||||
}
|
}
|
@ -26,4 +26,4 @@ public class MRB {
|
|||||||
public required string Status { get; set; }
|
public required string Status { get; set; }
|
||||||
public string Tool { get; set; } = "";
|
public string Tool { get; set; } = "";
|
||||||
public string Category { get; set; } = string.Empty;
|
public string Category { get; set; } = string.Empty;
|
||||||
}
|
}
|
@ -7,4 +7,4 @@ public class OOOTemp {
|
|||||||
public required DateTime OOOStartDate { get; set; }
|
public required DateTime OOOStartDate { get; set; }
|
||||||
public required DateTime OOOExpirationDate { get; set; }
|
public required DateTime OOOExpirationDate { get; set; }
|
||||||
public bool Processed { get; set; } = false;
|
public bool Processed { get; set; } = false;
|
||||||
}
|
}
|
@ -15,4 +15,4 @@ public class PCRB {
|
|||||||
public DateTime InsertTimeStamp { get; set; } = DateTimeUtilities.MIN_DT;
|
public DateTime InsertTimeStamp { get; set; } = DateTimeUtilities.MIN_DT;
|
||||||
public DateTime LastUpdateDate { get; set; } = DateTimeUtilities.MIN_DT;
|
public DateTime LastUpdateDate { get; set; } = DateTimeUtilities.MIN_DT;
|
||||||
public DateTime ClosedDate { get; set; } = DateTimeUtilities.MAX_DT;
|
public DateTime ClosedDate { get; set; } = DateTimeUtilities.MAX_DT;
|
||||||
}
|
}
|
@ -12,5 +12,5 @@ public class TrainingAssignment {
|
|||||||
public bool status { get; set; } = false;
|
public bool status { get; set; } = false;
|
||||||
public bool Deleted { get; set; } = false;
|
public bool Deleted { get; set; } = false;
|
||||||
public DateTime DeletedDate { get; set; }
|
public DateTime DeletedDate { get; set; }
|
||||||
public DateTime LastNotification { get; set; }
|
public DateTime LastNotification { get; set; }
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
using Dapper.Contrib.Extensions;
|
using Dapper.Contrib.Extensions;
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Models;
|
namespace FabApprovalWorkerService.Models;
|
||||||
[Table ("Users")]
|
[Table("Users")]
|
||||||
public class User {
|
public class User {
|
||||||
[Key]
|
[Key]
|
||||||
public required int UserID { get; set; }
|
public required int UserID { get; set; }
|
||||||
@ -16,7 +16,7 @@ public class User {
|
|||||||
public DateTime OOOStartDate { get; set; }
|
public DateTime OOOStartDate { get; set; }
|
||||||
public DateTime OOOExpirationDate { get; set; }
|
public DateTime OOOExpirationDate { get; set; }
|
||||||
public int DelegatedTo { get; set; }
|
public int DelegatedTo { get; set; }
|
||||||
public required bool CanViewITAR { get; set; }
|
public required bool CanViewITAR { get; set; }
|
||||||
public required bool IsManager { get; set; }
|
public required bool IsManager { get; set; }
|
||||||
public bool IsCleansCertified { get; set; } = false;
|
public bool IsCleansCertified { get; set; } = false;
|
||||||
public bool IsAnyLevelCertified { get; set; } = false;
|
public bool IsAnyLevelCertified { get; set; } = false;
|
||||||
@ -25,4 +25,4 @@ public class User {
|
|||||||
public bool IsFqaCertified { get; set; } = false;
|
public bool IsFqaCertified { get; set; } = false;
|
||||||
public bool IsFqaAssessmentCertified { get; set; } = false;
|
public bool IsFqaAssessmentCertified { get; set; } = false;
|
||||||
public bool IsActive { get; set; } = false;
|
public bool IsActive { get; set; } = false;
|
||||||
}
|
}
|
@ -5,4 +5,4 @@ public class UserSubRole {
|
|||||||
public required int UserID { get; set; }
|
public required int UserID { get; set; }
|
||||||
public required int SubRoleID { get; set; }
|
public required int SubRoleID { get; set; }
|
||||||
public bool Delegated { get; set; } = false;
|
public bool Delegated { get; set; } = false;
|
||||||
}
|
}
|
@ -1,4 +1,8 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.Net.Mail;
|
||||||
|
|
||||||
using FabApprovalWorkerService.Clients;
|
using FabApprovalWorkerService.Clients;
|
||||||
|
using FabApprovalWorkerService.Models;
|
||||||
using FabApprovalWorkerService.Services;
|
using FabApprovalWorkerService.Services;
|
||||||
using FabApprovalWorkerService.Workers;
|
using FabApprovalWorkerService.Workers;
|
||||||
|
|
||||||
@ -6,8 +10,6 @@ using NLog.Extensions.Logging;
|
|||||||
|
|
||||||
using Quartz;
|
using Quartz;
|
||||||
|
|
||||||
using System.Net.Mail;
|
|
||||||
|
|
||||||
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
|
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
|
||||||
|
|
||||||
builder.Logging.ClearProviders();
|
builder.Logging.ClearProviders();
|
||||||
@ -16,10 +18,20 @@ builder.Logging.AddNLog();
|
|||||||
|
|
||||||
builder.Services.AddHttpClient();
|
builder.Services.AddHttpClient();
|
||||||
|
|
||||||
|
if (Debugger.IsAttached) {
|
||||||
|
string? asmHtrTrainingGroupName = Environment.GetEnvironmentVariable("AsmHtrTrainingGroupName");
|
||||||
|
if (string.IsNullOrEmpty(asmHtrTrainingGroupName)) {
|
||||||
|
AppSettings.SetEnvironmentVariables(builder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AppSettings appSettings = AppSettings.LoadEnvironmentVariables();
|
||||||
|
builder.Services.AddSingleton(_ => appSettings);
|
||||||
|
|
||||||
builder.Services.AddScoped<IDbConnectionService, DbConnectionService>();
|
builder.Services.AddScoped<IDbConnectionService, DbConnectionService>();
|
||||||
builder.Services.AddScoped<IMonInClient, MonInClient>();
|
builder.Services.AddScoped<IMonInClient, MonInClient>();
|
||||||
builder.Services.AddScoped<IDalService, DalService>();
|
builder.Services.AddScoped<IDalService, DalService>();
|
||||||
builder.Services.AddScoped<SmtpClient>((serviceProvider) => {
|
builder.Services.AddScoped((serviceProvider) => {
|
||||||
return new SmtpClient("mailrelay-external.infineon.com");
|
return new SmtpClient("mailrelay-external.infineon.com");
|
||||||
});
|
});
|
||||||
builder.Services.AddScoped<ISmtpClientWrapper, SmtpClientWrapper>();
|
builder.Services.AddScoped<ISmtpClientWrapper, SmtpClientWrapper>();
|
||||||
@ -126,4 +138,7 @@ builder.Services.AddHostedService<WindowsService>();
|
|||||||
|
|
||||||
IHost app = builder.Build();
|
IHost app = builder.Build();
|
||||||
|
|
||||||
app.Run();
|
if (Debugger.IsAttached)
|
||||||
|
app.Services.GetRequiredService<IApprovalService>();
|
||||||
|
|
||||||
|
app.Run();
|
@ -1,7 +1,7 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Text;
|
||||||
using FabApprovalWorkerService.Utilities;
|
|
||||||
|
|
||||||
using System.Text;
|
using FabApprovalWorkerService.Models;
|
||||||
|
using FabApprovalWorkerService.Utilities;
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Services;
|
namespace FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
@ -63,4 +63,4 @@ public class ApprovalService : IApprovalService {
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Text;
|
||||||
using FabApprovalWorkerService.Utilities;
|
|
||||||
|
|
||||||
using System.Text;
|
using FabApprovalWorkerService.Models;
|
||||||
|
using FabApprovalWorkerService.Utilities;
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Services;
|
namespace FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
@ -106,4 +106,4 @@ public class CorrectiveActionService : ICorrectiveActionService {
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
using Dapper;
|
using System.Data;
|
||||||
|
|
||||||
using System.Data;
|
using Dapper;
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Services;
|
namespace FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ public class DalService : IDalService {
|
|||||||
|
|
||||||
int remainingRetries = RETRIES;
|
int remainingRetries = RETRIES;
|
||||||
bool queryWasSuccessful = false;
|
bool queryWasSuccessful = false;
|
||||||
Exception exception = null;
|
Exception? exception = null;
|
||||||
IEnumerable<T> result = new List<T>();
|
IEnumerable<T> result = new List<T>();
|
||||||
while (!queryWasSuccessful && remainingRetries > 0) {
|
while (!queryWasSuccessful && remainingRetries > 0) {
|
||||||
int backoffSeconds = (RETRIES - remainingRetries--) * BACKOFF_SECONDS_INTERVAL;
|
int backoffSeconds = (RETRIES - remainingRetries--) * BACKOFF_SECONDS_INTERVAL;
|
||||||
@ -60,7 +60,7 @@ public class DalService : IDalService {
|
|||||||
|
|
||||||
int remainingRetries = RETRIES;
|
int remainingRetries = RETRIES;
|
||||||
bool queryWasSuccessful = false;
|
bool queryWasSuccessful = false;
|
||||||
Exception exception = null;
|
Exception? exception = null;
|
||||||
int rowsAffected = 0;
|
int rowsAffected = 0;
|
||||||
while (!queryWasSuccessful && remainingRetries > 0) {
|
while (!queryWasSuccessful && remainingRetries > 0) {
|
||||||
int backoffSeconds = (RETRIES - remainingRetries--) * BACKOFF_SECONDS_INTERVAL;
|
int backoffSeconds = (RETRIES - remainingRetries--) * BACKOFF_SECONDS_INTERVAL;
|
||||||
@ -86,4 +86,4 @@ public class DalService : IDalService {
|
|||||||
|
|
||||||
return rowsAffected;
|
return rowsAffected;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,8 @@
|
|||||||
using Microsoft.Data.SqlClient;
|
using System.Data;
|
||||||
using Microsoft.Data.Sqlite;
|
|
||||||
|
|
||||||
using System.Data;
|
using FabApprovalWorkerService.Models;
|
||||||
|
|
||||||
|
using Microsoft.Data.SqlClient;
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Services;
|
namespace FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
@ -10,17 +11,13 @@ public interface IDbConnectionService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class DbConnectionService : IDbConnectionService {
|
public class DbConnectionService : IDbConnectionService {
|
||||||
private readonly string _envName;
|
|
||||||
private readonly string _dbConnectionString;
|
private readonly string _dbConnectionString;
|
||||||
|
|
||||||
public DbConnectionService() {
|
public DbConnectionService(AppSettings appSettings) {
|
||||||
_envName = Environment.GetEnvironmentVariable("FabApprovalEnvironmentName") ??
|
_dbConnectionString = appSettings.DbConnectionString;
|
||||||
throw new ArgumentNullException("FabApprovalEnvironmentName environment variable not found");
|
|
||||||
_dbConnectionString = Environment.GetEnvironmentVariable("FabApprovalDbConnectionString") ??
|
|
||||||
throw new ArgumentNullException("FabApprovalDbConnectionString environment variable not found");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IDbConnection GetConnection() {
|
public IDbConnection GetConnection() {
|
||||||
return new SqlConnection(_dbConnectionString);
|
return new SqlConnection(_dbConnectionString);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Text;
|
||||||
using FabApprovalWorkerService.Utilities;
|
|
||||||
|
|
||||||
using System.Text;
|
using FabApprovalWorkerService.Models;
|
||||||
|
using FabApprovalWorkerService.Utilities;
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Services;
|
namespace FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
@ -185,4 +185,4 @@ public class ECNService : IECNService {
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Text;
|
||||||
using FabApprovalWorkerService.Utilities;
|
|
||||||
|
|
||||||
using System.Text;
|
using FabApprovalWorkerService.Models;
|
||||||
|
using FabApprovalWorkerService.Utilities;
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Services;
|
namespace FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
@ -56,4 +56,4 @@ public class MRBService : IMRBService {
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,6 @@
|
|||||||
using Infineon.Monitoring.MonA;
|
using FabApprovalWorkerService.Models;
|
||||||
|
|
||||||
|
using Infineon.Monitoring.MonA;
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Services;
|
namespace FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
@ -13,13 +15,11 @@ public class MonInClient : IMonInClient {
|
|||||||
private readonly string _site;
|
private readonly string _site;
|
||||||
private readonly string _resource;
|
private readonly string _resource;
|
||||||
|
|
||||||
public MonInClient(ILogger<MonInClient> logger) {
|
public MonInClient(ILogger<MonInClient> logger, AppSettings appSettings) {
|
||||||
_logger = logger ??
|
_logger = logger ??
|
||||||
throw new ArgumentNullException("ILogger not injected");
|
throw new ArgumentNullException("ILogger not injected");
|
||||||
_site = Environment.GetEnvironmentVariable("MonInSite") ??
|
_site = appSettings.MonInSite;
|
||||||
throw new ArgumentNullException("MonInSite environment variable not found");
|
_resource = appSettings.WorkerServiceMonInResource;
|
||||||
_resource = Environment.GetEnvironmentVariable("FabApprovalWorkerServiceMonInResource") ??
|
|
||||||
throw new ArgumentNullException("FabApprovalWorkerServiceMonInResource environment variable not found");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostMetric(string metricName, double metricValue) {
|
public void PostMetric(string metricName, double metricValue) {
|
||||||
@ -55,4 +55,4 @@ public class MonInClient : IMonInClient {
|
|||||||
ex.Message);
|
ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Text;
|
||||||
using FabApprovalWorkerService.Utilities;
|
|
||||||
|
|
||||||
using System.Text;
|
using FabApprovalWorkerService.Models;
|
||||||
|
using FabApprovalWorkerService.Utilities;
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Services;
|
namespace FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
@ -57,4 +57,4 @@ public class PCRBService : IPCRBService {
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,9 +1,10 @@
|
|||||||
using FabApprovalWorkerService.Clients;
|
using System.Net.Mail;
|
||||||
|
|
||||||
|
using FabApprovalWorkerService.Clients;
|
||||||
|
using FabApprovalWorkerService.Models;
|
||||||
|
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
|
|
||||||
using System.Net.Mail;
|
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Services;
|
namespace FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
public interface ISmtpService {
|
public interface ISmtpService {
|
||||||
@ -15,13 +16,19 @@ public class SmtpService : ISmtpService {
|
|||||||
private ISmtpClientWrapper _smtpClient;
|
private ISmtpClientWrapper _smtpClient;
|
||||||
private bool _shouldSendEmail;
|
private bool _shouldSendEmail;
|
||||||
|
|
||||||
public SmtpService(ILogger<SmtpService> logger, ISmtpClientWrapper smtpClient) {
|
public SmtpService(ILogger<SmtpService> logger,
|
||||||
|
ISmtpClientWrapper smtpClient,
|
||||||
|
AppSettings? appSettings = null) {
|
||||||
_logger = logger ??
|
_logger = logger ??
|
||||||
throw new ArgumentNullException("ILogger not injected");
|
throw new ArgumentNullException("ILogger not injected");
|
||||||
_smtpClient = smtpClient ??
|
_smtpClient = smtpClient ??
|
||||||
throw new ArgumentNullException("SmtpClient not injected");
|
throw new ArgumentNullException("SmtpClient not injected");
|
||||||
if (!Boolean.TryParse(Environment.GetEnvironmentVariable("FabApprovalShouldSendEmail"), out _shouldSendEmail))
|
if (appSettings is not null)
|
||||||
throw new ArgumentNullException("FabApprovalShouldSendEmail environment variable not found");
|
_shouldSendEmail = appSettings.ShouldSendEmail;
|
||||||
|
else {
|
||||||
|
if (!bool.TryParse(Environment.GetEnvironmentVariable("FabApprovalShouldSendEmail"), out _shouldSendEmail))
|
||||||
|
throw new ArgumentNullException("FabApprovalShouldSendEmail environment variable not found");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<bool> SendEmail(IEnumerable<MailAddress> recipients,
|
public async Task<bool> SendEmail(IEnumerable<MailAddress> recipients,
|
||||||
@ -32,7 +39,7 @@ public class SmtpService : ISmtpService {
|
|||||||
if (ccRecipients is null) throw new ArgumentNullException("ccRecipients cannot be null!");
|
if (ccRecipients is null) throw new ArgumentNullException("ccRecipients cannot be null!");
|
||||||
if (subject.IsNullOrEmpty()) throw new ArgumentNullException("subject cannot be null or empty!");
|
if (subject.IsNullOrEmpty()) throw new ArgumentNullException("subject cannot be null or empty!");
|
||||||
if (body.IsNullOrEmpty()) throw new ArgumentNullException("body cannot be null or empty!");
|
if (body.IsNullOrEmpty()) throw new ArgumentNullException("body cannot be null or empty!");
|
||||||
|
|
||||||
return await Task.Run(() => {
|
return await Task.Run(() => {
|
||||||
int maxRetries = 3;
|
int maxRetries = 3;
|
||||||
int backoffSeconds = 30;
|
int backoffSeconds = 30;
|
||||||
@ -76,4 +83,4 @@ public class SmtpService : ISmtpService {
|
|||||||
return messageWasSent;
|
return messageWasSent;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,8 +1,8 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Text;
|
||||||
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
|
||||||
|
using FabApprovalWorkerService.Models;
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Services;
|
namespace FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
public interface ITrainingService {
|
public interface ITrainingService {
|
||||||
@ -30,20 +30,25 @@ public class TrainingService : ITrainingService {
|
|||||||
|
|
||||||
private readonly string _userCertRecordsFilePath;
|
private readonly string _userCertRecordsFilePath;
|
||||||
|
|
||||||
public TrainingService(ILogger<TrainingService> logger, IDalService dalService, IUserService userService) {
|
public TrainingService(ILogger<TrainingService> logger,
|
||||||
|
IDalService dalService,
|
||||||
|
IUserService userService,
|
||||||
|
AppSettings? appSettings = null) {
|
||||||
_logger = logger ??
|
_logger = logger ??
|
||||||
throw new ArgumentNullException("ILogger not injected");
|
throw new ArgumentNullException("ILogger not injected");
|
||||||
_dalService = dalService ??
|
_dalService = dalService ??
|
||||||
throw new ArgumentNullException("IDalService not injected");
|
throw new ArgumentNullException("IDalService not injected");
|
||||||
_userService = userService ??
|
_userService = userService ??
|
||||||
throw new ArgumentNullException("IUserService not injected");
|
throw new ArgumentNullException("IUserService not injected");
|
||||||
_userCertRecordsFilePath = Environment.GetEnvironmentVariable("UserCertificationRecordsFilePath") ??
|
_userCertRecordsFilePath = appSettings is not null
|
||||||
throw new ArgumentNullException("UserCertificationRecordsFilePath environment variable not found");
|
? appSettings.UserCertificationRecordsFilePath
|
||||||
|
: Environment.GetEnvironmentVariable("UserCertificationRecordsFilePath") ??
|
||||||
|
throw new ArgumentNullException("UserCertificationRecordsFilePath environment variable not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeleteDocAssignment(int trainingAssignmentId) {
|
public async Task DeleteDocAssignment(int trainingAssignmentId) {
|
||||||
if (trainingAssignmentId <= 0) throw new ArgumentException($"Invalid training assignment id: {trainingAssignmentId}");
|
if (trainingAssignmentId <= 0) throw new ArgumentException($"Invalid training assignment id: {trainingAssignmentId}");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
_logger.LogInformation($"Attempting to delete training doc assignments for training assignment {trainingAssignmentId}");
|
_logger.LogInformation($"Attempting to delete training doc assignments for training assignment {trainingAssignmentId}");
|
||||||
|
|
||||||
@ -84,7 +89,7 @@ public class TrainingService : ITrainingService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeleteTrainingAssignmentById(int trainingAssignmentId) {
|
public async Task DeleteTrainingAssignmentById(int trainingAssignmentId) {
|
||||||
if (trainingAssignmentId <= 0)
|
if (trainingAssignmentId <= 0)
|
||||||
throw new ArgumentException($"Invalid training assignment id: {trainingAssignmentId}");
|
throw new ArgumentException($"Invalid training assignment id: {trainingAssignmentId}");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -341,4 +346,4 @@ public class TrainingService : ITrainingService {
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,9 +1,9 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Text;
|
||||||
|
|
||||||
|
using FabApprovalWorkerService.Models;
|
||||||
|
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Services;
|
namespace FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
public interface IUserService {
|
public interface IUserService {
|
||||||
@ -417,4 +417,4 @@ public class UserService : IUserService {
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -39,4 +39,4 @@ public class WindowsService : BackgroundService {
|
|||||||
Environment.Exit(1);
|
Environment.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,13 +1,13 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Net.Mail;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using FabApprovalWorkerService.Models;
|
||||||
using FabApprovalWorkerService.Services;
|
using FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
using Infineon.Monitoring.MonA;
|
using Infineon.Monitoring.MonA;
|
||||||
|
|
||||||
using Quartz;
|
using Quartz;
|
||||||
|
|
||||||
using System.Net.Mail;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Workers;
|
namespace FabApprovalWorkerService.Workers;
|
||||||
|
|
||||||
public class ApprovalNotificationWorker : IJob {
|
public class ApprovalNotificationWorker : IJob {
|
||||||
@ -31,7 +31,8 @@ public class ApprovalNotificationWorker : IJob {
|
|||||||
IPCRBService pcrbService,
|
IPCRBService pcrbService,
|
||||||
ISmtpService smtpService,
|
ISmtpService smtpService,
|
||||||
IMonInClient monInClient,
|
IMonInClient monInClient,
|
||||||
IUserService userService) {
|
IUserService userService,
|
||||||
|
AppSettings appSettings) {
|
||||||
_logger = logger ?? throw new ArgumentNullException("ILogger not injected");
|
_logger = logger ?? throw new ArgumentNullException("ILogger not injected");
|
||||||
_approvalService = approvalService ?? throw new ArgumentNullException("IApprovalService not injected");
|
_approvalService = approvalService ?? throw new ArgumentNullException("IApprovalService not injected");
|
||||||
_ecnService = ecnService ?? throw new ArgumentNullException("IECNService not injected");
|
_ecnService = ecnService ?? throw new ArgumentNullException("IECNService not injected");
|
||||||
@ -41,10 +42,8 @@ public class ApprovalNotificationWorker : IJob {
|
|||||||
_smtpService = smtpService ?? throw new ArgumentNullException("ISmtpService not injected");
|
_smtpService = smtpService ?? throw new ArgumentNullException("ISmtpService not injected");
|
||||||
_monInClient = monInClient ?? throw new ArgumentNullException("IMonInClient not injected");
|
_monInClient = monInClient ?? throw new ArgumentNullException("IMonInClient not injected");
|
||||||
_userService = userService ?? throw new ArgumentNullException("IUserService not injected");
|
_userService = userService ?? throw new ArgumentNullException("IUserService not injected");
|
||||||
_oldFabApprovalBaseUrl = Environment.GetEnvironmentVariable("OldFabApprovalUrl") ??
|
_oldFabApprovalBaseUrl = appSettings.OldBaseUrl;
|
||||||
throw new ArgumentNullException("OldFabApprovalUrl environment variable not found");
|
_newFabApprovalBaseUrl = appSettings.NewBaseUrl;
|
||||||
_newFabApprovalBaseUrl = Environment.GetEnvironmentVariable("NewFabApprovalBaseUrl") ??
|
|
||||||
throw new ArgumentNullException("NewFabApprovalBaseUrl environment variable not found");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Execute(IJobExecutionContext context) {
|
public async Task Execute(IJobExecutionContext context) {
|
||||||
@ -116,8 +115,8 @@ public class ApprovalNotificationWorker : IJob {
|
|||||||
if (issueAndUserIds.Contains($"{approval.IssueID}{approval.UserID}")) {
|
if (issueAndUserIds.Contains($"{approval.IssueID}{approval.UserID}")) {
|
||||||
approval.NotifyDate = DateTime.Now;
|
approval.NotifyDate = DateTime.Now;
|
||||||
await _approvalService.UpdateApproval(approval);
|
await _approvalService.UpdateApproval(approval);
|
||||||
} else if ((isEcn || isCa || isMrb || isPcrb) &&
|
} else if ((isEcn || isCa || isMrb || isPcrb) &&
|
||||||
!string.IsNullOrWhiteSpace(title) &&
|
!string.IsNullOrWhiteSpace(title) &&
|
||||||
!string.IsNullOrWhiteSpace(url) &&
|
!string.IsNullOrWhiteSpace(url) &&
|
||||||
!issueAndUserIds.Contains($"{approval.IssueID}{approval.UserID}")) {
|
!issueAndUserIds.Contains($"{approval.IssueID}{approval.UserID}")) {
|
||||||
|
|
||||||
@ -167,4 +166,4 @@ public class ApprovalNotificationWorker : IJob {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,13 +1,13 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Net.Mail;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using FabApprovalWorkerService.Models;
|
||||||
using FabApprovalWorkerService.Services;
|
using FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
using Infineon.Monitoring.MonA;
|
using Infineon.Monitoring.MonA;
|
||||||
|
|
||||||
using Quartz;
|
using Quartz;
|
||||||
|
|
||||||
using System.Net.Mail;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Workers;
|
namespace FabApprovalWorkerService.Workers;
|
||||||
|
|
||||||
public class CAFollowUpWorker : IJob {
|
public class CAFollowUpWorker : IJob {
|
||||||
@ -22,14 +22,14 @@ public class CAFollowUpWorker : IJob {
|
|||||||
ICorrectiveActionService caService,
|
ICorrectiveActionService caService,
|
||||||
IUserService userService,
|
IUserService userService,
|
||||||
ISmtpService smtpService,
|
ISmtpService smtpService,
|
||||||
IMonInClient monInClient) {
|
IMonInClient monInClient,
|
||||||
|
AppSettings appSettings) {
|
||||||
_logger = logger ?? throw new ArgumentNullException("ILogger not injected");
|
_logger = logger ?? throw new ArgumentNullException("ILogger not injected");
|
||||||
_caService = caService ?? throw new ArgumentNullException("ICorrectiveActionService not injected");
|
_caService = caService ?? throw new ArgumentNullException("ICorrectiveActionService not injected");
|
||||||
_userService = userService ?? throw new ArgumentNullException("IUserService not injected");
|
_userService = userService ?? throw new ArgumentNullException("IUserService not injected");
|
||||||
_smtpService = smtpService ?? throw new ArgumentNullException("ISmtpService not injected");
|
_smtpService = smtpService ?? throw new ArgumentNullException("ISmtpService not injected");
|
||||||
_monInClient = monInClient ?? throw new ArgumentNullException("IMonInClient not injected");
|
_monInClient = monInClient ?? throw new ArgumentNullException("IMonInClient not injected");
|
||||||
_baseUrl = Environment.GetEnvironmentVariable("FabApprovalBaseUrl") ??
|
_baseUrl = appSettings.BaseUrl;
|
||||||
throw new ArgumentNullException("FabApprovalBaseUrl environment variable not found");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Execute(IJobExecutionContext context) {
|
public async Task Execute(IJobExecutionContext context) {
|
||||||
@ -45,7 +45,7 @@ public class CAFollowUpWorker : IJob {
|
|||||||
.ToList();
|
.ToList();
|
||||||
foreach (CorrectiveAction ca in followUpCAs) {
|
foreach (CorrectiveAction ca in followUpCAs) {
|
||||||
await _caService.CreateCorrectiveActionFollowUpApproval(ca.CANo, ca.QAID);
|
await _caService.CreateCorrectiveActionFollowUpApproval(ca.CANo, ca.QAID);
|
||||||
|
|
||||||
string qaEmail = await _userService.GetUserEmail(ca.QAID);
|
string qaEmail = await _userService.GetUserEmail(ca.QAID);
|
||||||
IEnumerable<MailAddress> recipients = new List<MailAddress>() {
|
IEnumerable<MailAddress> recipients = new List<MailAddress>() {
|
||||||
new MailAddress(qaEmail)
|
new MailAddress(qaEmail)
|
||||||
@ -84,4 +84,4 @@ public class CAFollowUpWorker : IJob {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,3 +1,5 @@
|
|||||||
|
using System.Text;
|
||||||
|
|
||||||
using FabApprovalWorkerService.Models;
|
using FabApprovalWorkerService.Models;
|
||||||
using FabApprovalWorkerService.Services;
|
using FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
@ -5,14 +7,12 @@ using Infineon.Monitoring.MonA;
|
|||||||
|
|
||||||
using Quartz;
|
using Quartz;
|
||||||
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Workers;
|
namespace FabApprovalWorkerService.Workers;
|
||||||
|
|
||||||
public class CertificationTrainingGroupWorker : IJob {
|
public class CertificationTrainingGroupWorker : IJob {
|
||||||
private static readonly int MAX_RETRIES = 3;
|
private static readonly int MAX_RETRIES = 3;
|
||||||
private static readonly int BACKOFF_SECONDS = 30;
|
private static readonly int BACKOFF_SECONDS = 30;
|
||||||
|
|
||||||
private readonly ILogger<CertificationTrainingGroupWorker> _logger;
|
private readonly ILogger<CertificationTrainingGroupWorker> _logger;
|
||||||
private readonly ITrainingService _trainingService;
|
private readonly ITrainingService _trainingService;
|
||||||
private readonly IUserService _userService;
|
private readonly IUserService _userService;
|
||||||
@ -26,25 +26,20 @@ public class CertificationTrainingGroupWorker : IJob {
|
|||||||
private readonly string _packagingAndLabelingTrainingGroupName;
|
private readonly string _packagingAndLabelingTrainingGroupName;
|
||||||
|
|
||||||
public CertificationTrainingGroupWorker(ILogger<CertificationTrainingGroupWorker> logger,
|
public CertificationTrainingGroupWorker(ILogger<CertificationTrainingGroupWorker> logger,
|
||||||
ITrainingService trainingService,
|
ITrainingService trainingService,
|
||||||
IUserService userService,
|
IUserService userService,
|
||||||
IMonInClient monInClient) {
|
IMonInClient monInClient,
|
||||||
|
AppSettings appSettings) {
|
||||||
_logger = logger ?? throw new ArgumentNullException("ILogger not injected");
|
_logger = logger ?? throw new ArgumentNullException("ILogger not injected");
|
||||||
_trainingService = trainingService ?? throw new ArgumentNullException("ITrainingService not injected");
|
_trainingService = trainingService ?? throw new ArgumentNullException("ITrainingService not injected");
|
||||||
_userService = userService ?? throw new ArgumentNullException("IUserService not injected");
|
_userService = userService ?? throw new ArgumentNullException("IUserService not injected");
|
||||||
_monInClient = monInClient ?? throw new ArgumentNullException("IMonInClient not injected");
|
_monInClient = monInClient ?? throw new ArgumentNullException("IMonInClient not injected");
|
||||||
_siProductionGroupName = Environment.GetEnvironmentVariable("SiProductionTrainingGroupName") ??
|
_fqaTrainingGroupName = appSettings.FqaTrainingGroupName;
|
||||||
throw new ArgumentNullException("SiProductionTrainingGroupName environment variable not found");
|
_asmHtrTrainingGroupName = appSettings.AsmHtrTrainingGroupName;
|
||||||
_asmHtrTrainingGroupName = Environment.GetEnvironmentVariable("AsmHtrTrainingGroupName") ??
|
_cleansTrainingGroupName = appSettings.CleansTrainingGroupName;
|
||||||
throw new ArgumentNullException("AsmHtrTrainingGroupName environment variable not found");
|
_epiProTrainingGroupName = appSettings.EpiProTrainingGroupName;
|
||||||
_cleansTrainingGroupName = Environment.GetEnvironmentVariable("CleansTrainingGroupName") ??
|
_siProductionGroupName = appSettings.SiProductionTrainingGroupName;
|
||||||
throw new ArgumentNullException("CleansTrainingGroupName environment variable not found");
|
_packagingAndLabelingTrainingGroupName = appSettings.PackagingAndLabelingTrainingGroupName;
|
||||||
_epiProTrainingGroupName = Environment.GetEnvironmentVariable("EpiProTrainingGroupName") ??
|
|
||||||
throw new ArgumentNullException("EpiProTrainingGroupName environment variable not found");
|
|
||||||
_fqaTrainingGroupName = Environment.GetEnvironmentVariable("FqaTrainingGroupName") ??
|
|
||||||
throw new ArgumentNullException("FqaTrainingGroupName environment variable not found");
|
|
||||||
_packagingAndLabelingTrainingGroupName = Environment.GetEnvironmentVariable("PackagingAndLabelingTrainingGroupName") ??
|
|
||||||
throw new ArgumentNullException("PackagingAndLabelingTrainingGroupName environment variable not found");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Execute(IJobExecutionContext context) {
|
public async Task Execute(IJobExecutionContext context) {
|
||||||
@ -93,10 +88,11 @@ public class CertificationTrainingGroupWorker : IJob {
|
|||||||
_logger.LogInformation($"Processing cert record {{{record}}}");
|
_logger.LogInformation($"Processing cert record {{{record}}}");
|
||||||
|
|
||||||
if (record is not null) {
|
if (record is not null) {
|
||||||
User user = null;
|
User? user;
|
||||||
try {
|
try {
|
||||||
user = await _userService.GetUserByEmail(record.Email);
|
user = await _userService.GetUserByEmail(record.Email);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
|
user = null;
|
||||||
StringBuilder errMsgBuilder = new();
|
StringBuilder errMsgBuilder = new();
|
||||||
errMsgBuilder.Append($"An exception occurred when attempting to get user for email {record.Email}. ");
|
errMsgBuilder.Append($"An exception occurred when attempting to get user for email {record.Email}. ");
|
||||||
errMsgBuilder.Append($"Exception: {ex.Message}");
|
errMsgBuilder.Append($"Exception: {ex.Message}");
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Text;
|
||||||
|
|
||||||
|
using FabApprovalWorkerService.Models;
|
||||||
using FabApprovalWorkerService.Services;
|
using FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
using Infineon.Monitoring.MonA;
|
using Infineon.Monitoring.MonA;
|
||||||
|
|
||||||
using Quartz;
|
using Quartz;
|
||||||
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Workers;
|
namespace FabApprovalWorkerService.Workers;
|
||||||
|
|
||||||
public sealed class ExpiredOOOStatusWorker : IJob {
|
public sealed class ExpiredOOOStatusWorker : IJob {
|
||||||
@ -43,7 +43,7 @@ public sealed class ExpiredOOOStatusWorker : IJob {
|
|||||||
List<User> expiredOOOUsers = await _userService.GetAllExpiredOOOUsersAsync();
|
List<User> expiredOOOUsers = await _userService.GetAllExpiredOOOUsersAsync();
|
||||||
|
|
||||||
_logger.LogInformation($"There are {expiredOOOUsers.Count()} OOO users expiring");
|
_logger.LogInformation($"There are {expiredOOOUsers.Count()} OOO users expiring");
|
||||||
|
|
||||||
foreach (User user in expiredOOOUsers) {
|
foreach (User user in expiredOOOUsers) {
|
||||||
bool approvalsRemoved = await _userService.RemoveDelegatedApprovalsForUser(user.UserID, user.DelegatedTo);
|
bool approvalsRemoved = await _userService.RemoveDelegatedApprovalsForUser(user.UserID, user.DelegatedTo);
|
||||||
bool subRolesRemoved = await _userService.RemoveDelegatedUserSubRoles(user.UserID, user.DelegatedTo);
|
bool subRolesRemoved = await _userService.RemoveDelegatedUserSubRoles(user.UserID, user.DelegatedTo);
|
||||||
@ -61,7 +61,7 @@ public sealed class ExpiredOOOStatusWorker : IJob {
|
|||||||
errMsgBuilder.Append($"OOO flag removed: {oooFlagRemoved}");
|
errMsgBuilder.Append($"OOO flag removed: {oooFlagRemoved}");
|
||||||
throw new Exception(errMsgBuilder.ToString());
|
throw new Exception(errMsgBuilder.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
StringBuilder errMsgBuilder = new();
|
StringBuilder errMsgBuilder = new();
|
||||||
errMsgBuilder.Append("An exception occurred when attempting to remove OOO status for users with OOO expired ");
|
errMsgBuilder.Append("An exception occurred when attempting to remove OOO status for users with OOO expired ");
|
||||||
@ -80,4 +80,4 @@ public sealed class ExpiredOOOStatusWorker : IJob {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,14 +1,13 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Net.Mail;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using FabApprovalWorkerService.Models;
|
||||||
using FabApprovalWorkerService.Services;
|
using FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
using Infineon.Monitoring.MonA;
|
using Infineon.Monitoring.MonA;
|
||||||
|
|
||||||
using Quartz;
|
using Quartz;
|
||||||
|
|
||||||
using System.Net.Mail;
|
|
||||||
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Workers;
|
namespace FabApprovalWorkerService.Workers;
|
||||||
public class ExpiredTECNWorker : IJob {
|
public class ExpiredTECNWorker : IJob {
|
||||||
private readonly ILogger<ExpiredTECNWorker> _logger;
|
private readonly ILogger<ExpiredTECNWorker> _logger;
|
||||||
@ -24,7 +23,8 @@ public class ExpiredTECNWorker : IJob {
|
|||||||
ITrainingService trainingService,
|
ITrainingService trainingService,
|
||||||
IUserService userService,
|
IUserService userService,
|
||||||
ISmtpService smtpService,
|
ISmtpService smtpService,
|
||||||
IMonInClient monInClient) {
|
IMonInClient monInClient,
|
||||||
|
AppSettings appSettings) {
|
||||||
_logger = logger ??
|
_logger = logger ??
|
||||||
throw new ArgumentNullException("ILogger not injected");
|
throw new ArgumentNullException("ILogger not injected");
|
||||||
_ecnService = ecnService ??
|
_ecnService = ecnService ??
|
||||||
@ -37,8 +37,7 @@ public class ExpiredTECNWorker : IJob {
|
|||||||
throw new ArgumentNullException("ISmtpService not injected");
|
throw new ArgumentNullException("ISmtpService not injected");
|
||||||
_monInClient = monInClient ??
|
_monInClient = monInClient ??
|
||||||
throw new ArgumentNullException("IMonInClient not injected");
|
throw new ArgumentNullException("IMonInClient not injected");
|
||||||
_baseUrl = Environment.GetEnvironmentVariable("FabApprovalBaseUrl") ??
|
_baseUrl = appSettings.BaseUrl;
|
||||||
throw new ArgumentNullException("FabApprovalBaseUrl environment variable not found");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Execute(IJobExecutionContext context) {
|
public async Task Execute(IJobExecutionContext context) {
|
||||||
@ -61,14 +60,14 @@ public class ExpiredTECNWorker : IJob {
|
|||||||
|
|
||||||
foreach (ECN ecn in expiredEcns) {
|
foreach (ECN ecn in expiredEcns) {
|
||||||
List<int> trainingIds = (await _trainingService.GetTrainingIdsForECN(ecn.ECNNumber)).ToList();
|
List<int> trainingIds = (await _trainingService.GetTrainingIdsForECN(ecn.ECNNumber)).ToList();
|
||||||
|
|
||||||
foreach (int trainingId in trainingIds) {
|
foreach (int trainingId in trainingIds) {
|
||||||
await _trainingService.DeleteTrainingAssignmentsByTrainingId(trainingId);
|
await _trainingService.DeleteTrainingAssignmentsByTrainingId(trainingId);
|
||||||
|
|
||||||
List<int> trainingAssignmentIds =
|
List<int> trainingAssignmentIds =
|
||||||
(await _trainingService.GetTrainingAssignmentIdsForTraining(trainingId)).ToList();
|
(await _trainingService.GetTrainingAssignmentIdsForTraining(trainingId)).ToList();
|
||||||
|
|
||||||
foreach (int assignmentId in trainingAssignmentIds) {
|
foreach (int assignmentId in trainingAssignmentIds) {
|
||||||
await _trainingService.DeleteDocAssignment(assignmentId);
|
await _trainingService.DeleteDocAssignment(assignmentId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,8 +75,8 @@ public class ExpiredTECNWorker : IJob {
|
|||||||
}
|
}
|
||||||
|
|
||||||
string recipientEmail = await _userService.GetUserEmail(ecn.OriginatorID);
|
string recipientEmail = await _userService.GetUserEmail(ecn.OriginatorID);
|
||||||
List<MailAddress> recipientEamils = new List<MailAddress>() {
|
List<MailAddress> recipientEamils = new List<MailAddress>() {
|
||||||
new MailAddress(recipientEmail)
|
new MailAddress(recipientEmail)
|
||||||
};
|
};
|
||||||
|
|
||||||
string subject = "Notice of Expired TECN";
|
string subject = "Notice of Expired TECN";
|
||||||
@ -108,4 +107,4 @@ public class ExpiredTECNWorker : IJob {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,13 +1,13 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Net.Mail;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using FabApprovalWorkerService.Models;
|
||||||
using FabApprovalWorkerService.Services;
|
using FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
using Infineon.Monitoring.MonA;
|
using Infineon.Monitoring.MonA;
|
||||||
|
|
||||||
using Quartz;
|
using Quartz;
|
||||||
|
|
||||||
using System.Net.Mail;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Workers;
|
namespace FabApprovalWorkerService.Workers;
|
||||||
|
|
||||||
public class ExpiringTECNWorker : IJob {
|
public class ExpiringTECNWorker : IJob {
|
||||||
@ -22,7 +22,8 @@ public class ExpiringTECNWorker : IJob {
|
|||||||
IMonInClient monInClient,
|
IMonInClient monInClient,
|
||||||
IUserService userService,
|
IUserService userService,
|
||||||
IECNService ecnService,
|
IECNService ecnService,
|
||||||
ISmtpService smtpService) {
|
ISmtpService smtpService,
|
||||||
|
AppSettings appSettings) {
|
||||||
_logger = logger ??
|
_logger = logger ??
|
||||||
throw new ArgumentNullException("ILogger not injected");
|
throw new ArgumentNullException("ILogger not injected");
|
||||||
_monInClient = monInClient ??
|
_monInClient = monInClient ??
|
||||||
@ -33,8 +34,7 @@ public class ExpiringTECNWorker : IJob {
|
|||||||
throw new ArgumentNullException("IECNService not injected");
|
throw new ArgumentNullException("IECNService not injected");
|
||||||
_smtpService = smtpService ??
|
_smtpService = smtpService ??
|
||||||
throw new ArgumentNullException("ISmtpService not injected");
|
throw new ArgumentNullException("ISmtpService not injected");
|
||||||
_baseUrl = Environment.GetEnvironmentVariable("FabApprovalBaseUrl") ??
|
_baseUrl = appSettings.BaseUrl;
|
||||||
throw new ArgumentNullException("FabApprovalBaseUrl environment variable not found");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Execute(IJobExecutionContext context) {
|
public async Task Execute(IJobExecutionContext context) {
|
||||||
@ -57,8 +57,8 @@ public class ExpiringTECNWorker : IJob {
|
|||||||
foreach (ECN eCN in expiringTECNs) {
|
foreach (ECN eCN in expiringTECNs) {
|
||||||
string recipientEmail = await _userService.GetUserEmail(eCN.OriginatorID);
|
string recipientEmail = await _userService.GetUserEmail(eCN.OriginatorID);
|
||||||
MailAddress recipientAddress = new MailAddress(recipientEmail);
|
MailAddress recipientAddress = new MailAddress(recipientEmail);
|
||||||
List<MailAddress> recipientList = new () { recipientAddress };
|
List<MailAddress> recipientList = new() { recipientAddress };
|
||||||
|
|
||||||
List<MailAddress> ccRecipientList = new();
|
List<MailAddress> ccRecipientList = new();
|
||||||
foreach (string email in tecnNotificationUserEmails) {
|
foreach (string email in tecnNotificationUserEmails) {
|
||||||
ccRecipientList.Add(new MailAddress(email));
|
ccRecipientList.Add(new MailAddress(email));
|
||||||
@ -94,4 +94,4 @@ public class ExpiringTECNWorker : IJob {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,12 +1,12 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Text;
|
||||||
|
|
||||||
|
using FabApprovalWorkerService.Models;
|
||||||
using FabApprovalWorkerService.Services;
|
using FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
using Infineon.Monitoring.MonA;
|
using Infineon.Monitoring.MonA;
|
||||||
|
|
||||||
using Quartz;
|
using Quartz;
|
||||||
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Workers;
|
namespace FabApprovalWorkerService.Workers;
|
||||||
|
|
||||||
public sealed class PendingOOOStatusWorker : IJob {
|
public sealed class PendingOOOStatusWorker : IJob {
|
||||||
@ -43,7 +43,7 @@ public sealed class PendingOOOStatusWorker : IJob {
|
|||||||
List<OOOTemp> pendingOOOUsers = await _userService.GetAllPendingOOOUsersAsync();
|
List<OOOTemp> pendingOOOUsers = await _userService.GetAllPendingOOOUsersAsync();
|
||||||
|
|
||||||
_logger.LogInformation($"There are {pendingOOOUsers.Count()} pending OOO users");
|
_logger.LogInformation($"There are {pendingOOOUsers.Count()} pending OOO users");
|
||||||
|
|
||||||
foreach (OOOTemp oooTemp in pendingOOOUsers) {
|
foreach (OOOTemp oooTemp in pendingOOOUsers) {
|
||||||
bool userAlreadyOOO = await _userService.IsUserAlreadyOOO(oooTemp.OOOUserID);
|
bool userAlreadyOOO = await _userService.IsUserAlreadyOOO(oooTemp.OOOUserID);
|
||||||
bool delegateAlreadyADelegate = await _userService.IsDelegatorAlreadyDelegatedTo(oooTemp.DelegatedTo);
|
bool delegateAlreadyADelegate = await _userService.IsDelegatorAlreadyDelegatedTo(oooTemp.DelegatedTo);
|
||||||
@ -84,4 +84,4 @@ public sealed class PendingOOOStatusWorker : IJob {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,13 +1,13 @@
|
|||||||
using FabApprovalWorkerService.Models;
|
using System.Net.Mail;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using FabApprovalWorkerService.Models;
|
||||||
using FabApprovalWorkerService.Services;
|
using FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
using Infineon.Monitoring.MonA;
|
using Infineon.Monitoring.MonA;
|
||||||
|
|
||||||
using Quartz;
|
using Quartz;
|
||||||
|
|
||||||
using System.Net.Mail;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace FabApprovalWorkerService.Workers;
|
namespace FabApprovalWorkerService.Workers;
|
||||||
|
|
||||||
public class TrainingNotificationWorker : IJob {
|
public class TrainingNotificationWorker : IJob {
|
||||||
@ -24,15 +24,15 @@ public class TrainingNotificationWorker : IJob {
|
|||||||
IUserService userService,
|
IUserService userService,
|
||||||
IECNService ecnService,
|
IECNService ecnService,
|
||||||
ISmtpService smtpService,
|
ISmtpService smtpService,
|
||||||
IMonInClient monInClient) {
|
IMonInClient monInClient,
|
||||||
|
AppSettings appSettings) {
|
||||||
_logger = logger ?? throw new ArgumentNullException("ILogger not injected");
|
_logger = logger ?? throw new ArgumentNullException("ILogger not injected");
|
||||||
_trainingService = trainingService ?? throw new ArgumentNullException("ITrainingService not injected");
|
_trainingService = trainingService ?? throw new ArgumentNullException("ITrainingService not injected");
|
||||||
_userService = userService ?? throw new ArgumentNullException("IUserService not injected");
|
_userService = userService ?? throw new ArgumentNullException("IUserService not injected");
|
||||||
_ecnService = ecnService ?? throw new ArgumentNullException("IECNService not injected");
|
_ecnService = ecnService ?? throw new ArgumentNullException("IECNService not injected");
|
||||||
_smtpService = smtpService ?? throw new ArgumentNullException("ISmtpService not injected");
|
_smtpService = smtpService ?? throw new ArgumentNullException("ISmtpService not injected");
|
||||||
_monInClient = monInClient ?? throw new ArgumentNullException("IMonInClient not injected");
|
_monInClient = monInClient ?? throw new ArgumentNullException("IMonInClient not injected");
|
||||||
_baseUrl = Environment.GetEnvironmentVariable("FabApprovalBaseUrl") ??
|
_baseUrl = appSettings.BaseUrl;
|
||||||
throw new ArgumentNullException("FabApprovalBaseUrl environment variable not found");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Execute(IJobExecutionContext context) {
|
public async Task Execute(IJobExecutionContext context) {
|
||||||
@ -67,7 +67,7 @@ public class TrainingNotificationWorker : IJob {
|
|||||||
_logger.LogInformation($"User {user.UserID} is inactive. Cancelling all training.");
|
_logger.LogInformation($"User {user.UserID} is inactive. Cancelling all training.");
|
||||||
|
|
||||||
IEnumerable<int> userTrainingAssignmentIds = await _trainingService.GetTrainingAssignmentIdsByUserId(user.UserID);
|
IEnumerable<int> userTrainingAssignmentIds = await _trainingService.GetTrainingAssignmentIdsByUserId(user.UserID);
|
||||||
|
|
||||||
foreach (int trainingAssignmentId in userTrainingAssignmentIds) {
|
foreach (int trainingAssignmentId in userTrainingAssignmentIds) {
|
||||||
await _trainingService.DeleteTrainingAssignmentById(trainingAssignmentId);
|
await _trainingService.DeleteTrainingAssignmentById(trainingAssignmentId);
|
||||||
await _trainingService.DeleteDocAssignment(trainingAssignmentId);
|
await _trainingService.DeleteDocAssignment(trainingAssignmentId);
|
||||||
@ -124,7 +124,7 @@ public class TrainingNotificationWorker : IJob {
|
|||||||
};
|
};
|
||||||
|
|
||||||
IEnumerable<MailAddress> ccRecipients = new List<MailAddress>();
|
IEnumerable<MailAddress> ccRecipients = new List<MailAddress>();
|
||||||
|
|
||||||
StringBuilder bodyBuilder = new();
|
StringBuilder bodyBuilder = new();
|
||||||
bodyBuilder.Append("Hello, you have open training assignments in Fab Approval. This is a reminder to ");
|
bodyBuilder.Append("Hello, you have open training assignments in Fab Approval. This is a reminder to ");
|
||||||
bodyBuilder.Append("finish your training assignments. <br /> View your open training assignments ");
|
bodyBuilder.Append("finish your training assignments. <br /> View your open training assignments ");
|
||||||
@ -134,4 +134,4 @@ public class TrainingNotificationWorker : IJob {
|
|||||||
|
|
||||||
await _smtpService.SendEmail(recipients, ccRecipients, subject, bodyBuilder.ToString());
|
await _smtpService.SendEmail(recipients, ccRecipients, subject, bodyBuilder.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
|
|
||||||
}
|
|
287
FabApprovalWorkerServiceTests/.editorconfig
Normal file
287
FabApprovalWorkerServiceTests/.editorconfig
Normal file
@ -0,0 +1,287 @@
|
|||||||
|
# Remove the line below if you want to inherit .editorconfig settings from higher directories
|
||||||
|
root = true
|
||||||
|
|
||||||
|
# C# files
|
||||||
|
[*.cs]
|
||||||
|
|
||||||
|
#### Core EditorConfig Options ####
|
||||||
|
|
||||||
|
# Indentation and spacing
|
||||||
|
indent_size = 4
|
||||||
|
indent_style = space
|
||||||
|
tab_width = 4
|
||||||
|
|
||||||
|
# New line preferences
|
||||||
|
end_of_line = crlf
|
||||||
|
insert_final_newline = false
|
||||||
|
|
||||||
|
#### .NET Coding Conventions ####
|
||||||
|
|
||||||
|
# Organize usings
|
||||||
|
dotnet_separate_import_directive_groups = true
|
||||||
|
dotnet_sort_system_directives_first = true
|
||||||
|
file_header_template = unset
|
||||||
|
|
||||||
|
# this. and Me. preferences
|
||||||
|
dotnet_style_qualification_for_event = false
|
||||||
|
dotnet_style_qualification_for_field = false
|
||||||
|
dotnet_style_qualification_for_method = false
|
||||||
|
dotnet_style_qualification_for_property = false
|
||||||
|
|
||||||
|
# Language keywords vs BCL types preferences
|
||||||
|
dotnet_style_predefined_type_for_locals_parameters_members = true
|
||||||
|
dotnet_style_predefined_type_for_member_access = true
|
||||||
|
|
||||||
|
# Parentheses preferences
|
||||||
|
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:error
|
||||||
|
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:error
|
||||||
|
dotnet_style_parentheses_in_other_operators = never_if_unnecessary
|
||||||
|
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:error
|
||||||
|
|
||||||
|
# Modifier preferences
|
||||||
|
dotnet_style_require_accessibility_modifiers = for_non_interface_members
|
||||||
|
|
||||||
|
# Expression-level preferences
|
||||||
|
dotnet_style_coalesce_expression = true
|
||||||
|
dotnet_style_collection_initializer = true
|
||||||
|
dotnet_style_explicit_tuple_names = true
|
||||||
|
dotnet_style_namespace_match_folder = true
|
||||||
|
dotnet_style_null_propagation = true
|
||||||
|
dotnet_style_object_initializer = true
|
||||||
|
dotnet_style_operator_placement_when_wrapping = beginning_of_line
|
||||||
|
dotnet_style_prefer_auto_properties = true
|
||||||
|
dotnet_style_prefer_collection_expression = when_types_loosely_match
|
||||||
|
dotnet_style_prefer_compound_assignment = true
|
||||||
|
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
|
||||||
|
dotnet_style_prefer_conditional_expression_over_return = true:suggestion
|
||||||
|
dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed
|
||||||
|
dotnet_style_prefer_inferred_anonymous_type_member_names = true
|
||||||
|
dotnet_style_prefer_inferred_tuple_names = true
|
||||||
|
dotnet_style_prefer_is_null_check_over_reference_equality_method = true
|
||||||
|
dotnet_style_prefer_simplified_boolean_expressions = true
|
||||||
|
dotnet_style_prefer_simplified_interpolation = true
|
||||||
|
|
||||||
|
# Field preferences
|
||||||
|
dotnet_style_readonly_field = true
|
||||||
|
|
||||||
|
# Parameter preferences
|
||||||
|
dotnet_code_quality_unused_parameters = all:error
|
||||||
|
|
||||||
|
# Suppression preferences
|
||||||
|
dotnet_remove_unnecessary_suppression_exclusions = none
|
||||||
|
|
||||||
|
# New line preferences
|
||||||
|
dotnet_style_allow_multiple_blank_lines_experimental = false:error
|
||||||
|
dotnet_style_allow_statement_immediately_after_block_experimental = false:warning
|
||||||
|
|
||||||
|
#### C# Coding Conventions ####
|
||||||
|
|
||||||
|
# var preferences
|
||||||
|
csharp_style_var_elsewhere = false:error
|
||||||
|
csharp_style_var_for_built_in_types = false:error
|
||||||
|
csharp_style_var_when_type_is_apparent = false:error
|
||||||
|
|
||||||
|
# Expression-bodied members
|
||||||
|
csharp_style_expression_bodied_accessors = true:silent
|
||||||
|
csharp_style_expression_bodied_constructors = false:silent
|
||||||
|
csharp_style_expression_bodied_indexers = true:silent
|
||||||
|
csharp_style_expression_bodied_lambdas = true:silent
|
||||||
|
csharp_style_expression_bodied_local_functions = false:silent
|
||||||
|
csharp_style_expression_bodied_methods = false:silent
|
||||||
|
csharp_style_expression_bodied_operators = false:silent
|
||||||
|
csharp_style_expression_bodied_properties = true:silent
|
||||||
|
|
||||||
|
# Pattern matching preferences
|
||||||
|
csharp_style_pattern_matching_over_as_with_null_check = true
|
||||||
|
csharp_style_pattern_matching_over_is_with_cast_check = true
|
||||||
|
csharp_style_prefer_extended_property_pattern = true
|
||||||
|
csharp_style_prefer_not_pattern = true
|
||||||
|
csharp_style_prefer_pattern_matching = true
|
||||||
|
csharp_style_prefer_switch_expression = true
|
||||||
|
|
||||||
|
# Null-checking preferences
|
||||||
|
csharp_style_conditional_delegate_call = true
|
||||||
|
|
||||||
|
# Modifier preferences
|
||||||
|
csharp_prefer_static_local_function = false
|
||||||
|
csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async
|
||||||
|
csharp_style_prefer_readonly_struct = true:warning
|
||||||
|
csharp_style_prefer_readonly_struct_member = true
|
||||||
|
|
||||||
|
# Code-block preferences
|
||||||
|
csharp_prefer_braces = true:silent
|
||||||
|
csharp_prefer_simple_using_statement = false:suggestion
|
||||||
|
csharp_style_namespace_declarations = file_scoped:error
|
||||||
|
csharp_style_prefer_method_group_conversion = true:suggestion
|
||||||
|
csharp_style_prefer_primary_constructors = true:suggestion
|
||||||
|
csharp_style_prefer_top_level_statements = true:error
|
||||||
|
|
||||||
|
# Expression-level preferences
|
||||||
|
csharp_prefer_simple_default_expression = true
|
||||||
|
csharp_style_deconstructed_variable_declaration = false:suggestion
|
||||||
|
csharp_style_implicit_object_creation_when_type_is_apparent = false
|
||||||
|
csharp_style_inlined_variable_declaration = true:suggestion
|
||||||
|
csharp_style_prefer_index_operator = false:error
|
||||||
|
csharp_style_prefer_local_over_anonymous_function = true:error
|
||||||
|
csharp_style_prefer_null_check_over_type_check = true
|
||||||
|
csharp_style_prefer_range_operator = false:error
|
||||||
|
csharp_style_prefer_tuple_swap = true
|
||||||
|
csharp_style_prefer_utf8_string_literals = true
|
||||||
|
csharp_style_throw_expression = true
|
||||||
|
csharp_style_unused_value_assignment_preference = unused_local_variable
|
||||||
|
csharp_style_unused_value_expression_statement_preference = unused_local_variable
|
||||||
|
|
||||||
|
# 'using' directive preferences
|
||||||
|
csharp_using_directive_placement = outside_namespace:error
|
||||||
|
|
||||||
|
# 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:error
|
||||||
|
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
|
||||||
|
|
||||||
|
# Indentation preferences
|
||||||
|
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
|
||||||
|
|
||||||
|
# Space preferences
|
||||||
|
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
|
||||||
|
|
||||||
|
# Wrapping preferences
|
||||||
|
csharp_preserve_single_line_blocks = true
|
||||||
|
csharp_preserve_single_line_statements = true
|
||||||
|
|
||||||
|
#### Naming styles ####
|
||||||
|
|
||||||
|
# Naming rules
|
||||||
|
|
||||||
|
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
|
||||||
|
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
|
||||||
|
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
|
||||||
|
|
||||||
|
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
|
||||||
|
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
|
||||||
|
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
|
||||||
|
|
||||||
|
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
|
||||||
|
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
|
||||||
|
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
|
||||||
|
|
||||||
|
# Symbol specifications
|
||||||
|
|
||||||
|
dotnet_naming_symbols.interface.applicable_kinds = interface
|
||||||
|
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||||
|
dotnet_naming_symbols.interface.required_modifiers =
|
||||||
|
|
||||||
|
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
|
||||||
|
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||||
|
dotnet_naming_symbols.types.required_modifiers =
|
||||||
|
|
||||||
|
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
|
||||||
|
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||||
|
dotnet_naming_symbols.non_field_members.required_modifiers =
|
||||||
|
|
||||||
|
# Naming styles
|
||||||
|
|
||||||
|
dotnet_naming_style.pascal_case.required_prefix =
|
||||||
|
dotnet_naming_style.pascal_case.required_suffix =
|
||||||
|
dotnet_naming_style.pascal_case.word_separator =
|
||||||
|
dotnet_naming_style.pascal_case.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.begins_with_i.capitalization = pascal_case
|
||||||
|
|
||||||
|
[*.{cs,vb}]
|
||||||
|
dotnet_style_coalesce_expression = true:suggestion
|
||||||
|
dotnet_style_null_propagation = true:suggestion
|
||||||
|
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
|
||||||
|
dotnet_style_prefer_auto_properties = true:silent
|
||||||
|
dotnet_style_object_initializer = true:suggestion
|
||||||
|
dotnet_style_collection_initializer = true:suggestion
|
||||||
|
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
|
||||||
|
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
|
||||||
|
dotnet_style_prefer_conditional_expression_over_return = true:suggestion
|
||||||
|
dotnet_style_explicit_tuple_names = true:suggestion
|
||||||
|
dotnet_style_prefer_inferred_tuple_names = true:suggestion
|
||||||
|
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
|
||||||
|
dotnet_style_prefer_compound_assignment = true:suggestion
|
||||||
|
dotnet_style_prefer_simplified_interpolation = true:suggestion
|
||||||
|
dotnet_style_operator_placement_when_wrapping = beginning_of_line
|
||||||
|
tab_width = 4
|
||||||
|
indent_size = 4
|
||||||
|
end_of_line = crlf
|
||||||
|
dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion
|
||||||
|
|
||||||
|
# Question
|
||||||
|
|
||||||
|
csharp_style_inlined_variable_declaration = false
|
||||||
|
csharp_style_prefer_primary_constructors = false
|
||||||
|
dotnet_diagnostic.CA1510.severity = none # "Use 'ArgumentNullException.ThrowIfNull' instead of explicitly throwing a new exception instance
|
||||||
|
dotnet_diagnostic.CA1806.severity = none # SendEmailWithValidArgsShouldSendMailThroughClient calls TryParse but does not explicitly
|
||||||
|
dotnet_diagnostic.CA1827.severity = none # Count() is used where Any() could be used instead to improve performance
|
||||||
|
dotnet_diagnostic.CA1829.severity = none # Use the property instead of Enumerable.Count()
|
||||||
|
dotnet_diagnostic.CA1860.severity = none # Prefer comparing 'Count' to 0 rather than using 'Any()', both for clarity and for performance
|
||||||
|
dotnet_diagnostic.CA2208.severity = none # Method .ctor passes
|
||||||
|
dotnet_diagnostic.CA2208.severity = none # Method .ctor passes
|
||||||
|
dotnet_diagnostic.CA2211.severity = none # Non-constant fields should not be visible
|
||||||
|
dotnet_diagnostic.CA2253.severity = none # Named placeholders in the logging message template should not be comprised
|
||||||
|
dotnet_diagnostic.CA2254.severity = none # The logging message template should not vary between calls to
|
||||||
|
dotnet_diagnostic.CS1998.severity = none # This async method lacks 'await' operators and will run synchronously
|
||||||
|
dotnet_diagnostic.CS8618.severity = none # Non-nullable field '_mockDalService' must contain a non-null value when exiting constructor
|
||||||
|
dotnet_diagnostic.CS8625.severity = none # Cannot convert null literal to non-nullable reference type
|
||||||
|
dotnet_diagnostic.IDE0005.severity = none # Using directive is unnecessary.
|
||||||
|
dotnet_diagnostic.IDE0017.severity = none # Object initialization can be simplified
|
||||||
|
dotnet_diagnostic.IDE0018.severity = none # Variable declaration can be inlined
|
||||||
|
dotnet_diagnostic.IDE0028.severity = none # Collection initialization can be simplified
|
||||||
|
dotnet_diagnostic.IDE0044.severity = none # Make field readonly
|
||||||
|
dotnet_diagnostic.IDE0046.severity = none # 'if' statement can be simplified
|
||||||
|
dotnet_diagnostic.IDE0052.severity = none # "Private member can be removed
|
||||||
|
dotnet_diagnostic.IDE0270.severity = none # Null check can be simplified
|
||||||
|
dotnet_diagnostic.IDE0290.severity = none # Use primary constructor
|
||||||
|
dotnet_diagnostic.IDE1006.severity = none # Naming rule violation: These words must begin with upper case characters
|
||||||
|
dotnet_diagnostic.IDE2000.severity = error # IDE2000: Allow multiple blank lines
|
||||||
|
dotnet_diagnostic.NUnit2001.severity = none # Consider using the constraint model, Assert.That(expr, Is.False), instead of the classic model
|
||||||
|
dotnet_diagnostic.NUnit2004.severity = none # Consider using the constraint model
|
||||||
|
dotnet_diagnostic.NUnit2010.severity = none # Use Is.EqualTo constraint instead of direct comparison for better assertion messages in ca
|
||||||
|
dotnet_style_coalesce_expression = false
|
||||||
|
dotnet_style_object_initializer = false
|
||||||
|
dotnet_style_prefer_conditional_expression_over_return = false
|
1
FabApprovalWorkerServiceTests/.vscode/format-report.json
vendored
Normal file
1
FabApprovalWorkerServiceTests/.vscode/format-report.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[]
|
30
FabApprovalWorkerServiceTests/.vscode/launch.json
vendored
Normal file
30
FabApprovalWorkerServiceTests/.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/FabApprovalWorkerServiceTests.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}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
5
FabApprovalWorkerServiceTests/.vscode/mklink.md
vendored
Normal file
5
FabApprovalWorkerServiceTests/.vscode/mklink.md
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# mklink
|
||||||
|
|
||||||
|
```bash 1731705389065 = 638673021890650000 = Fri Nov 15 2024 14:16:28 GMT-0700 (Mountain Standard Time)
|
||||||
|
mklink /J "L:\DevOps\Mesa_FI\FabApprovalWorkerService\FabApprovalWorkerServiceTests\.vscode\.UserSecrets" "C:\Users\phares\AppData\Roaming\Microsoft\UserSecrets\f445e6e0-784b-4dde-9ef0-2143e6e90b1b"
|
||||||
|
```
|
424
FabApprovalWorkerServiceTests/.vscode/settings.json
vendored
Normal file
424
FabApprovalWorkerServiceTests/.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"
|
||||||
|
]
|
||||||
|
}
|
135
FabApprovalWorkerServiceTests/.vscode/tasks.json
vendored
Normal file
135
FabApprovalWorkerServiceTests/.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "User Secrets Init",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"user-secrets",
|
||||||
|
"-p",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"init"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "User Secrets Set",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"user-secrets",
|
||||||
|
"-p",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"set",
|
||||||
|
"_UserSecretsId",
|
||||||
|
"f445e6e0-784b-4dde-9ef0-2143e6e90b1b"
|
||||||
|
],
|
||||||
|
"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}/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "testDebug",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "testRelease",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary",
|
||||||
|
"-c",
|
||||||
|
"Release"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "publish",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"publish",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "watch",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"watch",
|
||||||
|
"run",
|
||||||
|
"--project",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests.csproj"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Publish AOT",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"publish",
|
||||||
|
"-r",
|
||||||
|
"win-x64",
|
||||||
|
"-c",
|
||||||
|
"Release",
|
||||||
|
"-p:PublishAot=true",
|
||||||
|
"${workspaceFolder}/FabApprovalWorkerServiceTests.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -40,7 +40,7 @@ public class CorrectiveActionServiceTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task GetCorrectiveActionsWithFollowUpInFiveDaysShouldReturnExpectedCAs() {
|
public async Task GetCorrectiveActionsWithFollowUpInFiveDaysShouldReturnExpectedCAs() {
|
||||||
IEnumerable<CorrectiveAction> expectedCAs = new List<CorrectiveAction>() {
|
IEnumerable<CorrectiveAction> expectedCAs = new List<CorrectiveAction>() {
|
||||||
new CorrectiveAction() {
|
new CorrectiveAction() {
|
||||||
CANo = 1,
|
CANo = 1,
|
||||||
CATitle = "title"
|
CATitle = "title"
|
||||||
@ -98,4 +98,4 @@ public class CorrectiveActionServiceTests {
|
|||||||
|
|
||||||
_mockDalService.Verify(d => d.ExecuteAsync(It.IsAny<string>()), Times.Once());
|
_mockDalService.Verify(d => d.ExecuteAsync(It.IsAny<string>()), Times.Once());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -74,7 +74,7 @@ internal class ECNServiceTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task GetExpiringTECNsWithNoExtensionFromDbShouldReturnSameResults() {
|
public async Task GetExpiringTECNsWithNoExtensionFromDbShouldReturnSameResults() {
|
||||||
IEnumerable<ECN> ecns = new List<ECN>() {
|
IEnumerable<ECN> ecns = new List<ECN>() {
|
||||||
new ECN() {
|
new ECN() {
|
||||||
ECNNumber = 1,
|
ECNNumber = 1,
|
||||||
OriginatorID = 1,
|
OriginatorID = 1,
|
||||||
@ -225,7 +225,7 @@ internal class ECNServiceTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task GetTECNNotificationUserEmailsShouldReturnExpectedUserEmails() {
|
public async Task GetTECNNotificationUserEmailsShouldReturnExpectedUserEmails() {
|
||||||
IEnumerable<string> userEmails = new List<string>() {
|
IEnumerable<string> userEmails = new List<string>() {
|
||||||
"fake1@email.com",
|
"fake1@email.com",
|
||||||
"fake2@email.com"
|
"fake2@email.com"
|
||||||
};
|
};
|
||||||
@ -270,7 +270,7 @@ internal class ECNServiceTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task GetEcnByNumberShouldReturnExpectedEcn() {
|
public async Task GetEcnByNumberShouldReturnExpectedEcn() {
|
||||||
IEnumerable<ECN> expectedEcns = new List<ECN>() {
|
IEnumerable<ECN> expectedEcns = new List<ECN>() {
|
||||||
new ECN() {
|
new ECN() {
|
||||||
ECNNumber = 1,
|
ECNNumber = 1,
|
||||||
OriginatorID = 1,
|
OriginatorID = 1,
|
||||||
@ -433,4 +433,4 @@ internal class ECNServiceTests {
|
|||||||
|
|
||||||
Assert.True(isExpired);
|
Assert.True(isExpired);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,15 +1,13 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
|
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
<IsTestProject>true</IsTestProject>
|
<IsTestProject>true</IsTestProject>
|
||||||
<Configurations>Debug;Release;Staging</Configurations>
|
<Configurations>Debug;Release;Staging</Configurations>
|
||||||
|
<UserSecretsId>f445e6e0-784b-4dde-9ef0-2143e6e90b1b</UserSecretsId>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
||||||
@ -19,13 +17,10 @@
|
|||||||
<PackageReference Include="NUnit.Analyzers" Version="3.9.0" />
|
<PackageReference Include="NUnit.Analyzers" Version="3.9.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\FabApprovalWorkerService\FabApprovalWorkerService.csproj" />
|
<ProjectReference Include="..\FabApprovalWorkerService\FabApprovalWorkerService.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Using Include="NUnit.Framework" />
|
<Using Include="NUnit.Framework" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
</Project>
|
|
@ -1,12 +1,12 @@
|
|||||||
using FabApprovalWorkerService.Clients;
|
using System.Net.Mail;
|
||||||
|
|
||||||
|
using FabApprovalWorkerService.Clients;
|
||||||
using FabApprovalWorkerService.Services;
|
using FabApprovalWorkerService.Services;
|
||||||
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
using Moq;
|
using Moq;
|
||||||
|
|
||||||
using System.Net.Mail;
|
|
||||||
|
|
||||||
namespace FabApprovalWorkerServiceTests;
|
namespace FabApprovalWorkerServiceTests;
|
||||||
internal class SmtpServiceTests {
|
internal class SmtpServiceTests {
|
||||||
private static readonly List<MailAddress> ADDRESS_LIST = new List<MailAddress>() {
|
private static readonly List<MailAddress> ADDRESS_LIST = new List<MailAddress>() {
|
||||||
@ -48,7 +48,7 @@ internal class SmtpServiceTests {
|
|||||||
_smtpService = new SmtpService(_mockLogger.Object, _mockSmtpClient.Object);
|
_smtpService = new SmtpService(_mockLogger.Object, _mockSmtpClient.Object);
|
||||||
|
|
||||||
Assert.ThrowsAsync<ArgumentNullException>(async Task () => {
|
Assert.ThrowsAsync<ArgumentNullException>(async Task () => {
|
||||||
await _smtpService.SendEmail(new List<MailAddress> (), ADDRESS_LIST, "subject", "body");
|
await _smtpService.SendEmail(new List<MailAddress>(), ADDRESS_LIST, "subject", "body");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,13 +100,13 @@ internal class SmtpServiceTests {
|
|||||||
[Test]
|
[Test]
|
||||||
public async Task SendEmailWithValidArgsShouldSendMailThroughClient() {
|
public async Task SendEmailWithValidArgsShouldSendMailThroughClient() {
|
||||||
_smtpService = new SmtpService(_mockLogger.Object, _mockSmtpClient.Object);
|
_smtpService = new SmtpService(_mockLogger.Object, _mockSmtpClient.Object);
|
||||||
|
|
||||||
Assert.True(await _smtpService.SendEmail(ADDRESS_LIST, ADDRESS_LIST, "subject", "body"));
|
Assert.True(await _smtpService.SendEmail(ADDRESS_LIST, ADDRESS_LIST, "subject", "body"));
|
||||||
|
|
||||||
bool shouldSendEmail = false;
|
bool shouldSendEmail = false;
|
||||||
Boolean.TryParse(Environment.GetEnvironmentVariable("FabApprovalShouldSendEmail"), out shouldSendEmail);
|
bool.TryParse(Environment.GetEnvironmentVariable("FabApprovalShouldSendEmail"), out shouldSendEmail);
|
||||||
|
|
||||||
if (shouldSendEmail)
|
if (shouldSendEmail)
|
||||||
_mockSmtpClient.Verify(s => s.Send(It.IsAny<MailMessage>()));
|
_mockSmtpClient.Verify(s => s.Send(It.IsAny<MailMessage>()));
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -156,7 +156,7 @@ public class TrainingServiceTests {
|
|||||||
public void MarkTrainingAsCompleteWithInvalidIdShouldThrowException() {
|
public void MarkTrainingAsCompleteWithInvalidIdShouldThrowException() {
|
||||||
_trainingService = new TrainingService(_mockLogger.Object, _mockDalService.Object, _mockUserService.Object);
|
_trainingService = new TrainingService(_mockLogger.Object, _mockDalService.Object, _mockUserService.Object);
|
||||||
|
|
||||||
Assert.ThrowsAsync<ArgumentException>(async Task() => await _trainingService.MarkTrainingAsComplete(-1));
|
Assert.ThrowsAsync<ArgumentException>(async Task () => await _trainingService.MarkTrainingAsComplete(-1));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -181,7 +181,7 @@ public class TrainingServiceTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task GetActiveTrainingAssignmentsShouldReturnExpectedAssignments() {
|
public async Task GetActiveTrainingAssignmentsShouldReturnExpectedAssignments() {
|
||||||
IEnumerable<TrainingAssignment> expectedAssignments = new List<TrainingAssignment>() {
|
IEnumerable<TrainingAssignment> expectedAssignments = new List<TrainingAssignment>() {
|
||||||
new TrainingAssignment() {
|
new TrainingAssignment() {
|
||||||
ID = 1,
|
ID = 1,
|
||||||
TrainingID = 1,
|
TrainingID = 1,
|
||||||
@ -217,7 +217,7 @@ public class TrainingServiceTests {
|
|||||||
|
|
||||||
_trainingService = new TrainingService(_mockLogger.Object, _mockDalService.Object, _mockUserService.Object);
|
_trainingService = new TrainingService(_mockLogger.Object, _mockDalService.Object, _mockUserService.Object);
|
||||||
|
|
||||||
Assert.ThrowsAsync<Exception>(async Task() => await _trainingService.GetActiveTrainingAssignments());
|
Assert.ThrowsAsync<Exception>(async Task () => await _trainingService.GetActiveTrainingAssignments());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -341,4 +341,4 @@ public class TrainingServiceTests {
|
|||||||
|
|
||||||
Assert.That(expectedIds, Is.EquivalentTo(actualIds));
|
Assert.That(expectedIds, Is.EquivalentTo(actualIds));
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -77,9 +77,9 @@ internal class UserServiceTests {
|
|||||||
|
|
||||||
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
|
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
|
||||||
|
|
||||||
Assert.ThrowsAsync<Exception>(async Task() => await _userService.GetAllExpiredOOOUsersAsync());
|
Assert.ThrowsAsync<Exception>(async Task () => await _userService.GetAllExpiredOOOUsersAsync());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task GetAllExpiredOOOUsersShouldReturnMockUsers() {
|
public async Task GetAllExpiredOOOUsersShouldReturnMockUsers() {
|
||||||
_mockDalService.Setup(d => d.QueryAsync<User>(It.IsAny<string>())).Returns(Task.FromResult(MOCK_USERS));
|
_mockDalService.Setup(d => d.QueryAsync<User>(It.IsAny<string>())).Returns(Task.FromResult(MOCK_USERS));
|
||||||
@ -99,7 +99,7 @@ internal class UserServiceTests {
|
|||||||
|
|
||||||
Assert.ThrowsAsync<Exception>(async Task () => await _userService.GetAllPendingOOOUsersAsync());
|
Assert.ThrowsAsync<Exception>(async Task () => await _userService.GetAllPendingOOOUsersAsync());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task GetAllPendingOOOUsersShouldReturnMockOOOTemps() {
|
public async Task GetAllPendingOOOUsersShouldReturnMockOOOTemps() {
|
||||||
_mockDalService.Setup(d => d.QueryAsync<OOOTemp>(It.IsAny<string>())).Returns(Task.FromResult(MOCK_OOO_TEMPS));
|
_mockDalService.Setup(d => d.QueryAsync<OOOTemp>(It.IsAny<string>())).Returns(Task.FromResult(MOCK_OOO_TEMPS));
|
||||||
@ -157,7 +157,7 @@ internal class UserServiceTests {
|
|||||||
|
|
||||||
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
|
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
|
||||||
|
|
||||||
Assert.ThrowsAsync<Exception>(async Task() => await _userService.IsDelegatorAlreadyDelegatedTo(2));
|
Assert.ThrowsAsync<Exception>(async Task () => await _userService.IsDelegatorAlreadyDelegatedTo(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -195,7 +195,7 @@ internal class UserServiceTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task InsertDelegatedRolesWithValidUserIdShouldReturnTrue() {
|
public async Task InsertDelegatedRolesWithValidUserIdShouldReturnTrue() {
|
||||||
IEnumerable<UserSubRole> userSubRoles = new List<UserSubRole>() {
|
IEnumerable<UserSubRole> userSubRoles = new List<UserSubRole>() {
|
||||||
new UserSubRole() {
|
new UserSubRole() {
|
||||||
UserSubRoleID = 1,
|
UserSubRoleID = 1,
|
||||||
UserID = 1,
|
UserID = 1,
|
||||||
@ -274,7 +274,7 @@ internal class UserServiceTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task RemoveDelegatedUserSubRolesWithValidParamsShouldReturnTrue() {
|
public async Task RemoveDelegatedUserSubRolesWithValidParamsShouldReturnTrue() {
|
||||||
IEnumerable<int> roleIds = new List<int>() {1, 2};
|
IEnumerable<int> roleIds = new List<int>() { 1, 2 };
|
||||||
|
|
||||||
_mockDalService.Setup(d => d.QueryAsync<int>(It.IsAny<string>())).Returns(Task.FromResult(roleIds));
|
_mockDalService.Setup(d => d.QueryAsync<int>(It.IsAny<string>())).Returns(Task.FromResult(roleIds));
|
||||||
_mockDalService.Setup(d => d.ExecuteAsync(It.IsAny<string>())).Returns(Task.FromResult(1));
|
_mockDalService.Setup(d => d.ExecuteAsync(It.IsAny<string>())).Returns(Task.FromResult(1));
|
||||||
@ -337,7 +337,7 @@ internal class UserServiceTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task FlagUserAsOOOWithValidOOOTempShouldReturnTrue() {
|
public async Task FlagUserAsOOOWithValidOOOTempShouldReturnTrue() {
|
||||||
OOOTemp oooTemp = new OOOTemp() {
|
OOOTemp oooTemp = new OOOTemp() {
|
||||||
ID = 1,
|
ID = 1,
|
||||||
OOOUserID = 1,
|
OOOUserID = 1,
|
||||||
OOOStartDate = DateTime.Now,
|
OOOStartDate = DateTime.Now,
|
||||||
@ -434,7 +434,7 @@ internal class UserServiceTests {
|
|||||||
public void GetUserEmailWithInvalidUserIdShouldThrowException() {
|
public void GetUserEmailWithInvalidUserIdShouldThrowException() {
|
||||||
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
|
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
|
||||||
|
|
||||||
Assert.ThrowsAsync<ArgumentException>(async Task() => await _userService.GetUserEmail(-1));
|
Assert.ThrowsAsync<ArgumentException>(async Task () => await _userService.GetUserEmail(-1));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -443,7 +443,7 @@ internal class UserServiceTests {
|
|||||||
|
|
||||||
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
|
_userService = new UserService(MOCK_LOGGER, _mockDalService.Object);
|
||||||
|
|
||||||
Assert.ThrowsAsync<Exception>(async Task() => await _userService.GetUserEmail(3));
|
Assert.ThrowsAsync<Exception>(async Task () => await _userService.GetUserEmail(3));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -483,12 +483,12 @@ internal class UserServiceTests {
|
|||||||
|
|
||||||
_mockDalService.Setup(d => d.QueryAsync<User>(It.IsAny<string>())).Returns(Task.FromResult(emptyUsers));
|
_mockDalService.Setup(d => d.QueryAsync<User>(It.IsAny<string>())).Returns(Task.FromResult(emptyUsers));
|
||||||
|
|
||||||
Assert.ThrowsAsync<Exception>(async Task() => await _userService.GetUserById(5));
|
Assert.ThrowsAsync<Exception>(async Task () => await _userService.GetUserById(5));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task GetUserByIdShouldReturnExpectedUser() {
|
public async Task GetUserByIdShouldReturnExpectedUser() {
|
||||||
IEnumerable<User> expectedUsers = new List<User>() {
|
IEnumerable<User> expectedUsers = new List<User>() {
|
||||||
new User() {
|
new User() {
|
||||||
UserID = 1,
|
UserID = 1,
|
||||||
LoginID = "id",
|
LoginID = "id",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user