- CREATE OR ALTER PROCEDURE SpRikeshImportTsk
- @Entity VARCHAR(50)
- AS
- BEGIN
- SET NOCOUNT ON;
- BEGIN TRY
- DECLARE @JsonData NVARCHAR(MAX);
- DECLARE @Data NVARCHAR(MAX);
- IF @Entity NOT IN ('Person', 'Organization')
- RAISERROR('Sorry invalid entity' , 16, 1);
- IF @Entity = 'Person'
- BEGIN
- CREATE TABLE #TempPerson (FirstName VARCHAR(250), MiddleName VARCHAR(250), LastName VARCHAR(250), SSN VARCHAR(50), Phone VARCHAR(25),
- Website VARCHAR(1000), [Status] VARCHAR(50), Address1 VARCHAR(100),Address2 VARCHAR(100),City VARCHAR(100),[State] VARCHAR(100),ZipCode VARCHAR(100),
- OfficeId INT
- );
- INSERT INTO #TempPerson (FirstName, MiddleName, LastName, SSN, Status, Website, Phone, Address1, Address2, City, State, ZipCode, OfficeId)
- VALUES
- ('Jake', 'John', 'Dough', '111-06-0000', 'Active', 'jmd.com', '9844644432', '123 Main Street', 'Apt 101', 'New York', 'NY', '10001', '1'),
- ('Alice', 'Grace', 'Smith', '111-22-0000', 'Active', 'ags.com', '9876543210', '456 Elm Street', 'Apt 202', 'Los Angeles', 'CA', '90001', '2'),
- ('Bob', 'William', 'Johnson', '333-33-3333', 'Active', 'bwj.com', '8765432109', '789 Oak Avenue', 'Apt 303', 'Chicago', 'IL', '60601', '3'),
- ('Emily', 'Jane', 'Davis', '444-44-4444', 'Active', 'ejd.com', '7654321098', '101 Pine Road', 'Apt 404', 'Miami', 'FL', '33101', '4'),
- ('Michael', 'Lee', 'Brown', '555-55-5555', 'Active', 'mlb.com', '6543210987', '202 Cedar Lane', 'Apt 505', 'Seattle', 'WA', '98101', '5'),
- ('Sarah', 'Marie', 'Clark', '666-66-6666', 'Active', 'smc.com', '5432109876', '303 Maple Drive', 'Apt 606', 'Atlanta', 'GA', '30301', '6'),
- ('David', 'Andrew', 'Wilson', '777-77-7777', 'Active', 'daw.com', '4321098765', '303 Maple Drive', 'Apt 707', 'Houston', 'TX', '77001', '7'),
- ('Olivia', 'Rose', 'Taylor', '888-88-8888', 'Active', 'ort.com', '3210987654', '505 Cherry Lane', 'Apt 808', 'Denver', 'CO', '80201', '8'),
- ('Ethan', 'Michael', 'White', '999-99-9999', 'Active', 'emw.com', '2109876543', '606 Birch Road', 'Apt 909', 'San Francisco', 'CA', '41010', '9');
- IF EXISTS (SELECT 1 FROM #TempPerson WHERE TRIM(ISNULL(FirstName, '')) = '' OR TRIM(ISNULL(LastName, '')) = '')
- RAISERROR('Sorry firstname or lastname cannot be null or empty', 16, 1);
- IF EXISTS (SELECT 1 FROM #TempPerson AS T WHERE ISNULL(T.Address1, '') = '' OR ISNULL(T.City, '') = '' OR ISNULL(T.State, '') = '' OR ISNULL(T.ZipCode, '') = '')
- RAISERROR('Sorry other address field cannot be empty except Address2', 16, 1);
- IF EXISTS ( SELECT 1 FROM #TempPerson AS T WHERE LEN(T.ZipCode) <> 5)
- RAISERROR('Sorry the zip code should be only 5 digits', 16, 1);
- IF EXISTS(SELECT 1 FROM #TempPerson AS T INNER JOIN Person AS P ON P.SSN = T.SSN)
- BEGIN
- DECLARE @DuplicateSsn VARCHAR(MAX);
- SELECT @DuplicateSsn = T.SSN FROM #TempPerson AS T INNER JOIN Person AS P ON P.SSN = T.SSN;
- SET @DuplicateSsn = 'Sorry the person already exists in the person table ' + 'Duplicate SSN ' + @DuplicateSsn;
- RAISERROR(@DuplicateSsn, 16, 1);
- END
- IF EXISTS(SELECT 1 FROM #TempPerson AS T WHERE LEN(T.Phone) <> 10)
- RAISERROR('Mobile numbers should be 10 digit only', 16, 1)
- IF EXISTS(SELECT 1 FROM #TempPerson AS T WHERE T.Status NOT IN ('Active', 'Inactive'))
- RAISERROR('Sorry the status field can only hold ''active'' or ''inactive'' as a status', 16, 1);
- SELECT @JsonData = (SELECT 1 AS 'UserPersonId',
- 'Employee' AS 'Entity' FOR JSON PATH, WITHOUT_ARRAY_WRAPPER);
- SET @Data = (SELECT * FROM #TempPerson FOR JSON PATH);
- SET @JsonData = JSON_MODIFY(@JsonData, '$.data', JSON_QUERY(@Data));
- SELECT @JsonData;
- --EXEC SpPersonTsk @JsonData;
- END
- IF @Entity = 'Organization'
- BEGIN
- CREATE TABLE #TempOrganization (OrganizationName VARCHAR(250), DepartmentName VARCHAR(250),[Parent] INT, Phone VARCHAR(25),Website VARCHAR(1000),
- Status VARCHAR(50), Address1 VARCHAR(100), Address2 VARCHAR(100), City VARCHAR(100), State VARCHAR(100), ZipCode VARCHAR(100),
- OfficeId INT);
- INSERT INTO #TempOrganization (OrganizationName, DepartmentName, Parent, Phone, Website, Status, Address1, Address2, City, State, ZipCode, OfficeId) VALUES
- ('ABC Inc', 'HR', 1, '1234567890', 'www.abc.com', 'Active', '123 Main St', 'Suite 101', 'New York', 'NY', '10001', 1),
- ('XYZ Corp', 'Finance', 1, '9876543210', 'www.xyzcorp.com', 'Active', '456 Elm St', 'Apt 202', 'Los Angeles', 'CA', '90001', 2),
- ('Acme Corporation', 'Sales', 1, '5551234567', 'www.acmecorp.com', 'Active', '789 Oak Ave', 'Apt 303', 'Chicago', 'IL', '60601', 3),
- ('Beta Corp', 'Marketing', 1, '3335557777', 'www.betacorp.com', 'Active', '101 Pine Rd', 'Apt 404', 'Miami', 'FL', '33101', 4),
- ('Gamma Industries', 'Operations', 1, '2224446666', 'www.gamma.com', 'Active', '202 Cedar Ln', 'Apt 505', 'Seattle', 'WA', '98100', 5),
- ('Delta Ltd', 'IT', 1, '1119998888', 'www.delta.com', 'Active', '303 Maple Dr', 'Apt 606', 'Atlanta', 'GA', '30301', 6),
- ('Sigma Solutions', 'Customer Care', 1, '7776663333', 'www.sigma.com', 'Active', '404 Walnut Blvd', 'Apt 707', 'Houston', 'TX', '77001', 7),
- ('Epsilon Group', 'Research', 1, '8882224444', 'www.epsilon.com', 'Active', '505 Cherry Ln', 'Apt 808', 'Denver', 'CO', '80201', 8),
- ('Zeta Enterprises', 'Development', 1, '9991115555', 'www.zeta.com', 'Active', '606 Birch Rd', 'Apt 909', 'San Francisco', 'CA', '94101', 9),
- ('Theta Industries', 'Quality Control', 1, '1239876543', 'www.theta.com', 'Active', '707 Elmwood Ave', 'Apt 1010', 'Boston', 'MA', '21010', 10);
- IF EXISTS (SELECT 1 FROM #TempOrganization WHERE TRIM(ISNULL(OrganizationName, ''))= '' OR TRIM(ISNULL(DepartmentName, '')) = '')
- RAISERROR('Sorry the OrganizationName or Department Name Cannot be null', 16, 1);
- IF EXISTS(SELECT 1 FROM #TempOrganization AS T WHERE LEN(T.Phone) <> 10)
- RAISERROR('Mobile Number should be 10 digits only', 16, 1);
- IF EXISTS (SELECT 1 FROM #TempOrganization AS T WHERE ISNULL(T.Address1, '') = '' OR ISNULL(T.City, '') = '' OR ISNULL(T.State, '') = '' OR ISNULL(T.ZipCode, '') = '')
- RAISERROR('Sorry other address field cannot be empty except Address2', 16, 1);
- IF EXISTS(SELECT 1 FROM #TempOrganization AS T WHERE T.Status NOT IN ('Active', 'Inactive'))
- RAISERROR('Sorry the status field can only hold ''active'' or ''inactive'' as a status', 16, 1);
- IF EXISTS ( SELECT 1 FROM #TempOrganization AS T WHERE LEN(T.ZipCode) <> 5)
- RAISERROR('Sorry the zip code should be only 5 digits', 16, 1);
- IF EXISTS (SELECT 1 FROM #TempOrganization AS T INNER JOIN Organization AS O ON O.DepartmentName = T.DepartmentName AND O.OrganizationName = T.OrganizationName
- AND T.Parent = O.Parent)
- RAISERROR('Sorry the organization already exist', 16, 1);
- SELECT @JsonData = (SELECT 1 AS 'UserPersonId',
- 'NewCustomer' AS 'Entity' FOR JSON PATH, WITHOUT_ARRAY_WRAPPER);
- SET @Data = (SELECT * FROM #TempOrganization FOR JSON PATH);
- SET @JsonData = JSON_MODIFY(@JsonData, '$.data', JSON_QUERY(@Data));
- --EXEC SpOrganizationTsk @JsonData;
- select @JsonData;
- END
- END TRY
- BEGIN CATCH
- THROW;
- END CATCH
- END
- EXEC SpRikeshImportTsk @Entity = 'Person';