You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

364 lines
20 KiB

-- ======================================================================
-- Description: "Coupon Issue" in Core System
-- ======================================================================
CREATE OR ALTER PROCEDURE [dbo].[PROC_COUPONISSUE]
(
@flag VARCHAR(50),
@serviceType CHAR = NULL,
@searchBy VARCHAR(50) = NULL,
@searchValue VARCHAR(MAX) = NULL,
@couponFilter CHAR = NULL,
@email VARCHAR(150) = NULL,
@coupon INT = NULL,
@idNumber VARCHAR(50) = NULL,
@anotherIDNumber VARCHAR(50) = NULL,
@rowId INT = NULL,
@agentID VARCHAR(150) = NULL,
@sortBy VARCHAR(100) = NULL,
@sortOrder VARCHAR(5) = NULL,
@pageSize INT = NULL,
@pageNumber INT = NULL,
@user VARCHAR(50) = NULL
)
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRY
DECLARE
@table VARCHAR(MAX) = NULL
,@sqlFilter VARCHAR(MAX) = ''
,@selectFieldList VARCHAR(MAX) = NULL
,@extraFieldList VARCHAR(MAX) = NULL
,@noPaging CHAR(1) = NULL
,@today DATETIME = getDate()
,@searchValues VARCHAR(MAX) = NULL
IF @flag = 'loadGrid'
BEGIN
SET @table =
N'(SELECT cm.customerId as ''Customer_ID'',
cm.email as ''User_ID'',
cm.fullName as ''Name'',
com.countryName as ''Nationality'',
cm.walletAccountNo as ''Virtual_Acc_No'',
cm.mobile as ''Mobile_No'',
sd1.detailTitle as ''ID_Type'',
cm.idNumber as ''ID_No'',
sd2.detailTitle as ''Another_ID_Type'',
cm.anotherIDNumber as ''Another_ID_No'',
ci.createdBy as ''Created_By'',
ci.createdDate as ''Created_Date'',
cm.isLoan as ''IsLoan'',
cs.couponName as ''Coupon_Name'',
ci.rowId as ''Row_ID'',
(CASE WHEN ci.isActive is NULL THEN ''N'' ELSE ci.isActive END) as ''Active_Coupon'',
cm.createdDate
FROM dbo.customerMaster cm(nolock)
LEFT JOIN dbo.staticDataValue sd1(nolock) ON sd1.valueId = cm.idType
LEFT JOIN dbo.staticDataValue sd2(nolock) ON sd2.valueId = cm.anotherIDType
INNER JOIN dbo.countryMaster com(nolock) ON com.countryId = cm.nativeCountry
LEFT JOIN dbo.couponIssue ci(nolock) ON ci.customerId = cm.customerId
LEFT JOIN dbo.couponSetup cs(nolock) ON cs.rowId = ci.couponId
WHERE cm.approvedDate is not null AND cm.isActive = ''Y''
AND ((cm.isBlackListed is null) or (cm.isBlackListed = ''N''))
AND ((cm.isDeleted is null) or (cm.isDeleted = ''N''))
AND ((cm.islocked is null) or (cm.islocked = ''N''))';
IF @serviceType = 'X'
SET @table += ' AND cm.isLoan IS NULL)x';
ELSE
SET @table += ' AND cm.isLoan = ''' + @serviceType + ''')x';
IF @searchBy = 'email'
SET @sqlFilter += ' AND x.User_ID like ''%' + @searchValue + '%''';
ELSE IF @searchBy = 'fullName'
SET @sqlFilter += ' AND x.Name like ''%' + @searchValue + '%''';
ELSE IF @searchBy = 'walletAccountNo'
SET @sqlFilter += ' AND x.Virtual_Acc_No = ''' + @searchValue + '''';
ELSE IF @searchBy = 'idNumber'
BEGIN
CREATE TABLE #searchValues (search VARCHAR(MAX))
INSERT INTO #searchValues EXEC PROC_SPLITSTRING @string=@searchValue, @seperator=',';
SELECT @searchValues = CONCAT(@searchValues + ',', '') + '''' + search + '''' FROM #searchValues
SET @sqlFilter += ' AND (x.ID_No in (' + @searchValues + ')' + ' OR x.Another_ID_No in (' + @searchValues + '))';
END
ELSE IF @searchBy = 'mobile'
SET @sqlFilter += ' AND REPLACE(x.Mobile_No, ''-'', '''') =''' + Replace(@searchValue, '-', '') + '''';
IF @couponFilter IS NOT NULL
BEGIN
IF @couponFilter = 'Y'
SET @sqlFilter += ' AND x.Active_Coupon=''Y''';
ELSE IF @couponFilter = 'N'
SET @sqlFilter += ' AND x.Active_Coupon=''N''';
END
SET @selectFieldList = 'Customer_ID, User_ID, Name, Nationality, Virtual_Acc_No, Mobile_No, ID_Type, ID_No, Another_ID_Type, Another_ID_No, IsLoan, Row_ID, Coupon_Name, Active_Coupon, Created_By, Created_Date'
IF @sortBy IS NULL
SET @sortBy = 'createdDate'
IF @sortOrder IS NULL
SET @sortOrder = 'DESC'
EXEC dbo.Proc_paging
@table,
@sqlFilter,
@selectFieldList,
@extraFieldList,
@sortBy,
@sortOrder,
@pageSize,
@pageNumber,
@noPaging
RETURN
END
IF @flag = 'setServiceType'
BEGIN
SELECT 'X' as [VALUE], 'GME Remit Only' as [TEXT]
UNION ALL
SELECT 'Y', 'GME Loan Active'
UNION ALL
SELECT 'N', 'GME Loan Inactive'
END
IF @flag = 'setSearchBy'
BEGIN
SELECT 'email' as [VALUE], 'User ID' as [TEXT]
UNION ALL
SELECT 'fullName', 'Name'
UNION ALL
SELECT 'walletAccountNo', 'Virtual Acc No'
UNION ALL
SELECT 'idNumber', 'ID No'
UNION ALL
SELECT 'mobile', 'Mobile No'
END
IF @flag = 'setControlType'
BEGIN
SELECT 'Y'as [VALUE], 'Activate GME Loan' as [TEXT]
UNION ALL
SELECT 'N', 'Deactivate GME Loan'
UNION ALL
SELECT 'X', 'Eliminate GME Loan'
END
IF @flag = 'setCouponList'
BEGIN
SELECT rowid as [VALUE], couponName as [TEXT]
FROM CouponSetup
END
IF @flag = 'setCouponFilter'
BEGIN
SELECT 'Y'as [VALUE], 'Active User' as [TEXT]
UNION ALL
SELECT 'N', 'Inactive User'
END
IF @flag = 'enableLoan'
BEGIN
IF @idNumber IS NOT NULL
BEGIN
SELECT @searchValue = customerId FROM customerMaster
WHERE idNumber = @idNumber AND approvedDate is not null
AND isActive = 'Y'
AND ((isBlackListed is null) or (isBlackListed = 'N'))
AND ((isDeleted is null) or (isDeleted = 'N'))
AND ((islocked is null) or (islocked = 'N'))
IF (@searchValue IS NULL)
BEGIN
EXEC proc_errorHandler 1, 'Invalid ID Number.', NULL
RETURN
END
ELSE
BEGIN
UPDATE customerMaster SET isLoan='Y' WHERE customerid=@searchValue AND idNumber=@idNumber
END
EXEC proc_errorHandler 0, 'Success.', NULL
END
ELSE
BEGIN
SELECT @searchValue = customerId FROM customerMaster
WHERE anotherIDNumber = @anotherIDNumber AND approvedDate is not null
AND isActive = 'Y'
AND ((isBlackListed is null) or (isBlackListed = 'N'))
AND ((isDeleted is null) or (isDeleted = 'N'))
AND ((islocked is null) or (islocked = 'N'))
IF (@searchValue IS NULL)
BEGIN
EXEC proc_errorHandler 1, 'Invalid Another ID Number.', NULL
RETURN
END
ELSE
BEGIN
UPDATE customerMaster SET isLoan='Y' WHERE customerid=@searchValue AND anotherIDNumber=@anotherIDNumber
END
EXEC proc_errorHandler 0, 'Success.', NULL
END
END
IF @flag = 'disableLoan'
BEGIN
IF @idNumber IS NOT NULL
BEGIN
SELECT @searchValue = customerId FROM customerMaster
WHERE idNumber = @idNumber AND approvedDate is not null
AND isActive = 'Y'
AND ((isBlackListed is null) or (isBlackListed = 'N'))
AND ((isDeleted is null) or (isDeleted = 'N'))
AND ((islocked is null) or (islocked = 'N'))
IF (@searchValue IS NULL)
BEGIN
EXEC proc_errorHandler 1, 'Invalid ID Number.', NULL
RETURN
END
ELSE
BEGIN
UPDATE customerMaster SET isLoan='N' WHERE customerid=@searchValue AND idNumber=@idNumber
END
EXEC proc_errorHandler 0, 'Success.', NULL
END
ELSE
BEGIN
SELECT @searchValue = customerId FROM customerMaster
WHERE anotherIDNumber = @anotherIDNumber AND approvedDate is not null
AND isActive = 'Y'
AND ((isBlackListed is null) or (isBlackListed = 'N'))
AND ((isDeleted is null) or (isDeleted = 'N'))
AND ((islocked is null) or (islocked = 'N'))
IF (@searchValue IS NULL)
BEGIN
EXEC proc_errorHandler 1, 'Invalid Another ID Number.', NULL
RETURN
END
ELSE
BEGIN
UPDATE customerMaster SET isLoan='N' WHERE customerid=@searchValue AND anotherIDNumber=@anotherIDNumber
END
EXEC proc_errorHandler 0, 'Success.', NULL
END
END
IF @flag = 'deleteLoan'
BEGIN
IF @idNumber IS NOT NULL
BEGIN
SELECT @searchValue = customerId FROM customerMaster
WHERE idNumber = @idNumber AND approvedDate is not null
AND isActive = 'Y'
AND ((isBlackListed is null) or (isBlackListed = 'N'))
AND ((isDeleted is null) or (isDeleted = 'N'))
AND ((islocked is null) or (islocked = 'N'))
IF (@searchValue IS NULL)
BEGIN
EXEC proc_errorHandler 1, 'Invalid ID Number.', NULL
RETURN
END
ELSE
BEGIN
UPDATE customerMaster SET isLoan=NULL WHERE customerid=@searchValue AND idNumber=@idNumber
END
EXEC proc_errorHandler 0, 'Success.', NULL
END
ELSE
BEGIN
SELECT @searchValue = customerId FROM customerMaster
WHERE anotherIDNumber = @anotherIDNumber AND approvedDate is not null
AND isActive = 'Y'
AND ((isBlackListed is null) or (isBlackListed = 'N'))
AND ((isDeleted is null) or (isDeleted = 'N'))
AND ((islocked is null) or (islocked = 'N'))
IF (@searchValue IS NULL)
BEGIN
EXEC proc_errorHandler 1, 'Invalid Another ID Number.', NULL
RETURN
END
ELSE
BEGIN
UPDATE customerMaster SET isLoan=NULL WHERE customerid=@searchValue AND anotherIDNumber=@anotherIDNumber
END
EXEC proc_errorHandler 0, 'Success.', NULL
END
END
IF @flag = 'issueCoupon'
BEGIN
SELECT @searchValue = COUNT(rowId) FROM CouponSetup
WHERE rowId = @coupon AND isActive = 'Y'
AND @today BETWEEN startDate AND endDate
IF (@searchValue IS NULL) OR (@searchValue = 0)
BEGIN
EXEC proc_errorHandler 1, 'Invalid Coupon.', NULL
RETURN
END
SELECT @searchValue = customerId FROM customerMaster WHERE email = @email
IF (@searchValue IS NULL) OR (@email IS NULL)
BEGIN
EXEC proc_errorHandler 1, 'Invalid Email.', NULL
RETURN
END
INSERT CouponIssue
SELECT @searchValue,
rowId,
NULL,
startDate,
endDate,
NULL,
NULL,
@today,
@agentID,
'Y',
0
FROM CouponSetup
WHERE rowid = @coupon AND isActive = 'Y' AND @today BETWEEN startDate and endDate
EXEC proc_errorHandler 0, 'Success.', NULL
END
IF @flag = 'withdrawCoupon'
BEGIN
IF @coupon = ''
BEGIN
UPDATE CouponIssue
SET isActive = 'N', createdBy = @agentID, createdDate = @today
WHERE rowId = @rowId
END
ELSE
BEGIN
UPDATE CouponIssue
SET isActive = 'N', createdBy = @agentID, createdDate = @today
WHERE rowId = @rowId AND couponId = @coupon
END
EXEC proc_errorHandler 0, 'Success.', NULL
END
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
DECLARE @errorMessage VARCHAR(max)
SET @errorMessage = Error_message()
EXEC Proc_errorhandler 1, @errorMessage, NULL
END CATCH
END