USP_DATAFORMTEMPLATE_ADD_SPONSORSHIPOPPORTUNITYGROUP

The save procedure used by the add dataform template "Sponsorship Opportunity Group Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@NAME nvarchar(100) IN Name
@SPONSORSHIPOPPORTUNITYTYPECODE int IN Type
@SPONSORSPEROPPORTUNITY int IN Maximum
@OFFERSOLESPONSORSHIP bit IN Offer sole sponsorship
@OVERRIDESPONSORSPEROPPORTUNITY xml IN
@SEQUENCE int IN Sequence
@SPONSORSHIPLOCATIONID uniqueidentifier IN Location
@GENDERCODE tinyint IN Gender
@HASCONDITIONCODE tinyint IN Disability/Illness
@ISHIVPOSITIVECODE tinyint IN HIV positive
@ISORPHANEDCODE tinyint IN Orphaned
@SPONSORSHIPOPPORTUNITYAGERANGEID uniqueidentifier IN Age range
@SPROPPPROJECTCATEGORYCODE uniqueidentifier IN Category

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_SPONSORSHIPOPPORTUNITYGROUP
(
    @ID uniqueidentifier = null output,
    @CHANGEAGENTID uniqueidentifier = null,
    @NAME nvarchar(100) = null,
    @SPONSORSHIPOPPORTUNITYTYPECODE int = 1,
    @SPONSORSPEROPPORTUNITY int = 1,
    @OFFERSOLESPONSORSHIP bit = 0,
    @OVERRIDESPONSORSPEROPPORTUNITY xml = null,
    @SEQUENCE int = 1,
    @SPONSORSHIPLOCATIONID uniqueidentifier = null,
    @GENDERCODE tinyint = 0,
    @HASCONDITIONCODE tinyint = 0,
    @ISHIVPOSITIVECODE tinyint = 0,
    @ISORPHANEDCODE tinyint = 0,
    @SPONSORSHIPOPPORTUNITYAGERANGEID uniqueidentifier = null,
    @SPROPPPROJECTCATEGORYCODE uniqueidentifier = null
)
as

set nocount on;

if @ID is null
    set @ID = newid()

if @CHANGEAGENTID is null  
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()

begin try
    -----------------------------------------

    -- validate Overrides

    if @OVERRIDESPONSORSPEROPPORTUNITY is not null
    begin
        declare @OVERRIDESTAB table (SPONSORSHIPLOCATIONID uniqueidentifier,
                                     SPONSORSPEROPPORTUNITY smallint,
                                     OFFERSOLESPONSORSHIP bit)

        insert into @OVERRIDESTAB
        select *
        from dbo.UFN_SPONSORSHIPOPPORTUNITYGROUP_OVERRIDESPONSORSPEROPPORTUNITY(@OVERRIDESPONSORSPEROPPORTUNITY);

        declare @BADCOUNT smallint

        -- sponsors per opportunity invalid

        select @BADCOUNT = count(*)
        from @OVERRIDESTAB OVERRIDES
        where OVERRIDES.SPONSORSPEROPPORTUNITY < 1

        if @BADCOUNT > 0
            raiserror('BBERR_INVALIDOVERRIDESPONSORSPEROPPORTUNITY',13,1)

        -- sole sponsorship invalid

        select @BADCOUNT = count(*)
        from @OVERRIDESTAB OVERRIDES
        where isnull(OVERRIDES.SPONSORSPEROPPORTUNITY,0) < 2
        and OVERRIDES.OFFERSOLESPONSORSHIP = 1;

        if @BADCOUNT > 0
            raiserror('BBERR_INVALIDOVERRIDEOFFERSOLESPONSORSHIP',13,1)

        -- duplicate locations

        select @BADCOUNT = count(*)
        from (select SPONSORSHIPLOCATIONID
        from @OVERRIDESTAB
        group by SPONSORSHIPLOCATIONID having count(*) > 1) X;

        if @BADCOUNT > 0
            raiserror('BBERR_DUPLICATELOCATIONS',13,1)

        -- overlapping locations

        select @BADCOUNT = count(*)
        from @OVERRIDESTAB OVERRIDES1
        inner join @OVERRIDESTAB OVERRIDES2 on 1=1
        inner join dbo.SPONSORSHIPLOCATION L1 on L1.ID = OVERRIDES1.SPONSORSHIPLOCATIONID
        inner join dbo.SPONSORSHIPLOCATION L2 on L2.ID = OVERRIDES2.SPONSORSHIPLOCATIONID
        where L1.HIERARCHYPATH.IsDescendantOf(L2.HIERARCHYPATH) = 1
        and L1.ID <> L2.ID;

        if @BADCOUNT > 0
            raiserror('BBERR_OVERLAPPINGLOCATIONS',13,1)

        if @SPONSORSHIPLOCATIONID is not null
        begin
            -- locations not consistent with group location

            select @BADCOUNT = count(*)
            from @OVERRIDESTAB OVERRIDES
            inner join dbo.SPONSORSHIPLOCATION OVERRIDELOCATION on OVERRIDELOCATION.ID = OVERRIDES.SPONSORSHIPLOCATIONID
            inner join dbo.SPONSORSHIPLOCATION GROUPLOCATION on GROUPLOCATION.ID = @SPONSORSHIPLOCATIONID
            where OVERRIDELOCATION.HIERARCHYPATH.IsDescendantOf(GROUPLOCATION.HIERARCHYPATH) = 0;

            if @BADCOUNT > 0
                raiserror('BBERR_INVALIDOVERRIDELOCATION',13,1)

            -- location same as group location (i.e., default would never be used)

            select @BADCOUNT = count(*)
            from @OVERRIDESTAB OVERRIDES
            where OVERRIDES.SPONSORSHIPLOCATIONID = @SPONSORSHIPLOCATIONID;

            if @BADCOUNT > 0
                raiserror('BBERR_SAMELOCATIONASGROUP',13,1)
        end

        -- locations w/ same values as default

        select @BADCOUNT = count(*)
        from @OVERRIDESTAB OVERRIDES
        where isnull(OVERRIDES.SPONSORSPEROPPORTUNITY,0) = isnull(@SPONSORSPEROPPORTUNITY,0)
        and OVERRIDES.OFFERSOLESPONSORSHIP = @OFFERSOLESPONSORSHIP

        if @BADCOUNT > 0
            raiserror('BBERR_OVERRIDESWITHSAMEVALUES',13,1)
    end
    -----------------------------------------


    insert into dbo.SPONSORSHIPOPPORTUNITYGROUP
        (ID,
         NAME,
         SPONSORSHIPOPPORTUNITYTYPECODE,
         SPONSORSPEROPPORTUNITY,
         OFFERSOLESPONSORSHIP,
         OVERRIDESPONSORSPEROPPORTUNITY,
         SEQUENCE,
         SPONSORSHIPLOCATIONID,
         GENDERCODE,
         SPONSORSHIPOPPORTUNITYAGERANGEID,
         ISHIVPOSITIVECODE,
         ISORPHANEDCODE,
         HASCONDITIONCODE,
         SPROPPPROJECTCATEGORYCODEID,
         ADDEDBYID,
         CHANGEDBYID,
         DATEADDED,
         DATECHANGED)
    values
        (@ID,
         @NAME,
         @SPONSORSHIPOPPORTUNITYTYPECODE,
         isnull(@SPONSORSPEROPPORTUNITY,0),
         @OFFERSOLESPONSORSHIP,
         @OVERRIDESPONSORSPEROPPORTUNITY,
         @SEQUENCE,
         @SPONSORSHIPLOCATIONID,
         isnull(@GENDERCODE,0),
         @SPONSORSHIPOPPORTUNITYAGERANGEID,
         isnull(@ISHIVPOSITIVECODE,0),
         isnull(@ISORPHANEDCODE,0),
         isnull(@HASCONDITIONCODE,0),
         @SPROPPPROJECTCATEGORYCODE,
         @CHANGEAGENTID,
         @CHANGEAGENTID,
         @CURRENTDATE,
         @CURRENTDATE)

end try

begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
end catch

return 0