Development Overview
Target release | |
---|---|
Epic | |
Document status | DRAFT |
Document owner | @Robert Adach |
Business POC | |
Designer | |
Developers | |
QA |
Databases
The project will two database connections. User stories will reference which connection string should be used for each/all database interaction within the user story. Each database connection will have 4 configurations associated with it
The ASWB connection strings are used for WRITING records.
The ASWBOnline connection strings are used for READING records.
Connection String Name | Server name | Database name | UserName | Description | |
---|---|---|---|---|---|
1 | ASWBLocal | local | ExamRegistration | ||
2 | ASWBQA | ASWBDevData | ExamRegistration | ||
3 | ASWBTest | ASWBDecData | ExamRegistration | ||
4 | ASWB | ASWBSQL2\ASWBSQL2 | ASWBTest | ||
5 | ASWBOnlineLocal | local | ExamRegistration | ||
6 | ASWBOnlineQA | ASWBDevData | ExamRegistration | ||
7 | ASWBOnlineTest | ASWBDevData | ExamRegistration | ||
8 | ASWBOnline | ASWBData | ExamRegistration | ||
9 | |||||
10 |
Key Reference Information
Column / Item References | ID Number | Display |
ExamBeforeGraduation | 0 | None Selected |
ExamBeforeGraduation | 1 | No |
ExamBeforeGraduation | 2 | Yes |
ExamBeforeGraduation | 3 | Maybe |
ExamBeforeGraduation | 99 | Unknown |
ExamBeforePostGrad | 0 | None Selected |
ExamBeforePostGrad | 1 | No |
ExamBeforePostGrad | 2 | Yes |
ExamBeforePostGrad | 3 | Maybe |
ExamBeforePostGrad | 99 | Unknown |
IsJurisdiction | 0 | None Selected |
IsJurisdiction | 1 | No |
IsJurisdiction | 2 | Yes |
IsJurisdiction | 3 | Maybe |
IsJurisdiction | 99 | Unknown |
IsMember | 0 | None Selected |
IsMember | 1 | No |
IsMember | 2 | Yes |
IsMember | 3 | Maybe |
IsMember | 99 | Unknown |
MSWBeforeExam | 0 | None Selected |
MSWBeforeExam | 1 | No |
MSWBeforeExam | 2 | Yes |
MSWBeforeExam | 3 | Maybe |
MSWBeforeExam | 99 | Unknown |
UsesAGExam | 0 | None Selected |
UsesAGExam | 1 | No |
UsesAGExam | 2 | Yes |
UsesAGExam | 3 | Maybe |
UsesAGExam | 99 | Unknown |
UsesASExam | 0 | None Selected |
UsesASExam | 1 | No |
UsesASExam | 2 | Yes |
UsesASExam | 3 | Maybe |
UsesASExam | 99 | Unknown |
UsesBSExam | 0 | None Selected |
UsesBSExam | 1 | No |
UsesBSExam | 2 | Yes |
UsesBSExam | 3 | Maybe |
UsesBSExam | 99 | Unknown |
UsesCLExam | 0 | None Selected |
UsesCLExam | 1 | No |
UsesCLExam | 2 | Yes |
UsesCLExam | 3 | Maybe |
UsesCLExam | 99 | Unknown |
UsesMSExam | 0 | None Selected |
UsesMSExam | 1 | No |
UsesMSExam | 2 | Yes |
UsesMSExam | 3 | Maybe |
UsesMSExam | 99 | Unknown |
Exam Level | 0 | None Selected |
Exam Level | 1 | Associate |
Exam Level | 2 | Bachelors |
Exam Level | 3 | Masters |
Exam Level | 4 | Advanced Generalist |
Exam Level | 5 | Clinical |
Supporting Procedures
Supporting procedures are SQL stored procedures used by the legacy system.
lp_GetNewID
DROP PROCEDURE IF EXISTS [dbo].[lp_GetNewID]
GO
CREATE PROCEDURE [dbo].[lp_GetNewID] @type INT, @id INT OUTPUT
as
set nocount on
begin tran
select @id = LastID from tblID where [ID] = @type
if (@id = 0) or (@id is null)
begin
raiserror ('Error: Unknown type of id - is there a row for it in tblID?',15,1)
rollback
select @id = -99
return -1 --no record for this type
end
else
begin
select @id = @id + 1
update tblID set LastID = @id where [ID] = @type
commit
end
set nocount off
return 0 --successful
Supporting Functions
Supporting functions are C# methods used to assist in determining field validity, verifying data, cleansing data and are based on the identically named functions in the legacy codebase.
IsEmailValid
static public bool IsEmailValid(string emailAddress)
{
// Make sure that there is a string passed
if (String.IsNullOrEmpty(emailAddress))
{
return false;
}
// Make sure the email address
// -- does not have a space
// -- does not have two dots in a row
// -- does not have a comma
// -- the @ symbol is at least the 3rd character
// -- the . is at least the 3rd character
// -- there is a period after the @ symbol
if (emailAddress.IndexOf(" ") > 0 || emailAddress.IndexOf("..") > 0 || (emailAddress.IndexOf(",") > 0)
|| emailAddress.IndexOf("@") < 2 || emailAddress.IndexOf(".") < 2
|| (Math.Abs(emailAddress.IndexOf("@") - emailAddress.IndexOf(".")) < 2))
{
return false;
}
// Make sure that the email address does not containg 2 @ symbols
if (Regex.Matches(emailAddress, "@").Count > 1)
{
return false;
}
// Make sure last period is not too close to the end of the email address
// hello@hello || hello@hello. || hello@hello.c are invalid
// hello@helloa.ca is valid
if (emailAddress.LastIndexOf(".") == emailAddress.Length || emailAddress.LastIndexOf(".") > (emailAddress.Length -3))
{ return false; }
return true;
}
IsZipCodeValid
This needs to be converted from Delphi to C#
function IsValidZipCode(vTheZipCode : string;
vIsCanadian : boolean; var vMsg : string) : boolean;
begin
result := true;
//don't initialize vMsg. You might want to append to an existing msg.
if vIsCanadian then
begin
//Must be 6 chars, or 6 chars + space
if ((pos(' ', vTheZipCode) > 0) and (length(vTheZipCode) <> 7))
OR ((pos(' ', vTheZipCode) = 0) and (length(vTheZipCode) <> 6)) then
begin
result := false;
vMsg := vMsg + 'Canadian postal code must be 6 characters, '
+ ' or 7 including space.' + #10 + #13;
end;
if (pos('-', vTheZipCode) > 0) then
begin
result := false;
vMsg := vMsg
+ 'Canadian postal code may not contain a dash' + #10 + #13;
end;
//if have space, must be middle character
if length(vTheZipCode) = 7 then
if pos(' ', vTheZipCode) <> 4 then
begin
result := false;
vMsg := vMsg
+ 'Space in Canadian postal code must be in the middle' + #10 + #13;
end;
end else
begin
//must be 5 chars, or 10 chars including dash
if ((pos('-', vTheZipCode) > 0) and (length(vTheZipCode) <> 10))
OR ((pos('-', vTheZipCode) = 0) and (length(vTheZipCode) <> 5)) then
begin
result := false;
vMsg := vMsg
+ 'Zip code must be either 5 or 10 digits long' + #10 + #13;
end;
//must be numeric except for the 6th char
if not AllDigits(copy(vTheZipCode,1,5) + copy(vTheZipCode,7,4)) then
begin
result := false;
vMsg := vMsg
+ 'Zip code must be all numbers, except for dash in Zip+4' + #10 + #13;
end;
end;
end;