DECLARE
@BDay varchar(15),
@Code varchar(10),
@CusTomerNo varchar(10)
DECLARE
@SMS varchar(500)
,@OutBoundSMS varchar(500)
,@WordCount int
,@IsValidSMS bit
@SMS varchar(500)
,@OutBoundSMS varchar(500)
,@WordCount int
,@IsValidSMS bit
--SET @SMS = 'FW 01928 12311995' -- valid
--SET @SMS = 'FW 101928 12311995' -- valid
--SET @SMS = 'QUERY 101928 12311995' -- Invalid
--SET @SMS = 'FW 1x1928 12311995' -- Invalid
--SET @SMS = 'FW 1x1928 12.31.1995' -- Invalid
--SET @SMS = 'FW 1x1928 12.31.1995' -- Invalid
SET @SMS = 'FW' -- Invalid
--SET @SMS = 'FW 01928' -- Invalid
--SET @SMS = 'FW A1928' -- Invalid
--SET @SMS = 'FW 101928 12311995' -- valid
--SET @SMS = 'QUERY 101928 12311995' -- Invalid
--SET @SMS = 'FW 1x1928 12311995' -- Invalid
--SET @SMS = 'FW 1x1928 12.31.1995' -- Invalid
--SET @SMS = 'FW 1x1928 12.31.1995' -- Invalid
SET @SMS = 'FW' -- Invalid
--SET @SMS = 'FW 01928' -- Invalid
--SET @SMS = 'FW A1928' -- Invalid
SET @IsValidSMS = 0
SELECT
IDENTITY(int, 1, 1) AS Id,
splitdata
INTO #temp1
FROM dbo.fnSplitString(@SMS,' ')
IDENTITY(int, 1, 1) AS Id,
splitdata
INTO #temp1
FROM dbo.fnSplitString(@SMS,' ')
SELECT @WordCount = COUNT(*) FROM #temp1
IF @WordCount = 3
BEGIN
--SELECT 'Valid 3 words format...'
SELECT TOP 1 @Code = splitdata FROM #temp1 WHERE Id = 1
SELECT TOP 1 @CusTomerNo = splitdata FROM #temp1 WHERE Id = 2
SELECT TOP 1 @BDay = splitdata FROM #temp1 WHERE Id = 3
--SELECT [Code] = @Code
-- , [IsNotQuery] = CASE WHEN @Code = 'QUERY' THEN 0 ELSE 1 END
-- , [EmpNo] = @CusTomerNo
-- , [IsValidEmpNo] = (CASE WHEN (ISNUMERIC(@CusTomerNo) = 1 AND LEN(@CusTomerNo) BETWEEN 5 AND 6) THEN 1 ELSE 0 END)
-- , [BDay] = @BDay
-- , [IsValidBDay] = (CASE WHEN ISNUMERIC(@BDay) = 1 AND LEN(@BDay) = 8 THEN 1 ELSE 0 END)
SET @IsValidSMS = CASE WHEN
(CASE WHEN @Code = 'QUERY' THEN 0 ELSE 1 END) = 1
AND (CASE WHEN (ISNUMERIC(@CusTomerNo) = 1 AND LEN(@CusTomerNo) BETWEEN 5 AND 6) THEN 1 ELSE 0 END) = 1
AND (CASE WHEN ISNUMERIC(@BDay) = 1 AND LEN(@BDay) = 8 THEN 1 ELSE 0 END) = 1
THEN 1 ELSE 0 END
END
BEGIN
--SELECT 'Valid 3 words format...'
SELECT TOP 1 @Code = splitdata FROM #temp1 WHERE Id = 1
SELECT TOP 1 @CusTomerNo = splitdata FROM #temp1 WHERE Id = 2
SELECT TOP 1 @BDay = splitdata FROM #temp1 WHERE Id = 3
--SELECT [Code] = @Code
-- , [IsNotQuery] = CASE WHEN @Code = 'QUERY' THEN 0 ELSE 1 END
-- , [EmpNo] = @CusTomerNo
-- , [IsValidEmpNo] = (CASE WHEN (ISNUMERIC(@CusTomerNo) = 1 AND LEN(@CusTomerNo) BETWEEN 5 AND 6) THEN 1 ELSE 0 END)
-- , [BDay] = @BDay
-- , [IsValidBDay] = (CASE WHEN ISNUMERIC(@BDay) = 1 AND LEN(@BDay) = 8 THEN 1 ELSE 0 END)
SET @IsValidSMS = CASE WHEN
(CASE WHEN @Code = 'QUERY' THEN 0 ELSE 1 END) = 1
AND (CASE WHEN (ISNUMERIC(@CusTomerNo) = 1 AND LEN(@CusTomerNo) BETWEEN 5 AND 6) THEN 1 ELSE 0 END) = 1
AND (CASE WHEN ISNUMERIC(@BDay) = 1 AND LEN(@BDay) = 8 THEN 1 ELSE 0 END) = 1
THEN 1 ELSE 0 END
END
IF @IsValidSMS = 0
BEGIN
IF @WordCount = 1
SET @OutBoundSMS = 'Invalid format. For '+ UPPER(@SMS) + ', please use this format: ' + + UPPER(@SMS) + ' <space>CustomerNo<space>BirthDate(MMDDYYYY)'
ELSE
SET @OutBoundSMS = 'Invalid format. Please use this format: CODE<space>CustomerNo<space>BirthDate(MMDDYYYY)'
+ CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) + 'For available codes:'
+ CHAR(13) + CHAR(10) + 'OT - OverTime'
+ CHAR(13) + CHAR(10) + 'SSS - SSS Deduction'
SELECT @OutBoundSMS
END
BEGIN
IF @WordCount = 1
SET @OutBoundSMS = 'Invalid format. For '+ UPPER(@SMS) + ', please use this format: ' + + UPPER(@SMS) + ' <space>CustomerNo<space>BirthDate(MMDDYYYY)'
ELSE
SET @OutBoundSMS = 'Invalid format. Please use this format: CODE<space>CustomerNo<space>BirthDate(MMDDYYYY)'
+ CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) + 'For available codes:'
+ CHAR(13) + CHAR(10) + 'OT - OverTime'
+ CHAR(13) + CHAR(10) + 'SSS - SSS Deduction'
SELECT @OutBoundSMS
END
DROP TABLE #temp1
Comments
Post a Comment