USP_WIDGETDASHBOARD_EMAILJOBSPROCESSED

Parameters

Parameter Parameter Type Mode Description
@SPECIFICDATEPARAMETER date IN
@COMPLETEDLABELPARAMETER nvarchar(100) IN
@FILTERMODEPARAMETER tinyint IN
@SELECTEDWEEKPARAMETER tinyint IN
@SELECTEDMONTHPARAMETER int IN
@SELECTEDYEARPARAMETER int IN
@ISINCLUDEGENERALPURPOSEEMAILJOBSPARAMETER bit IN
@ISINCLUDETRANSACTIONALEMAILJOBSPARAMETER bit IN

Definition

Copy


create procedure dbo.USP_WIDGETDASHBOARD_EMAILJOBSPROCESSED
(
@SPECIFICDATEPARAMETER date = null
,@COMPLETEDLABELPARAMETER nvarchar(100) = null
,@FILTERMODEPARAMETER tinyint = 0  --0: Today mode ,1: Specific day mode, 2: Week/Month/Year

,@SELECTEDWEEKPARAMETER tinyint = 0 --0:All weeks of selected month, 1:First week, 2:Second week, 3:Third week, 4:Fourth week

,@SELECTEDMONTHPARAMETER integer = 0 --00: All months of selected year, 01: Jan, 02: Feb ....12: Dec

,@SELECTEDYEARPARAMETER integer = 2011 --Year drop down

,@ISINCLUDEGENERALPURPOSEEMAILJOBSPARAMETER bit = 0
,@ISINCLUDETRANSACTIONALEMAILJOBSPARAMETER bit = 0
)
as
    -- do work

  set nocount on;

declare @ALLEMAILJOBSTEMPTABLE as TABLE (ID int identity primary key, DATECHANGED datetime, TIMECHANGED nvarchar(25), NUMOFTRANSACTIONALEMAILJOBS integer, NUMOFGENERALPURPOSEEMAILJOBS integer)
declare @TRANSACTIONALNUMOFEMAILJOBS integer = 0
,@GENERALPURPOSENUMOFEMAILJOBS integer = 0

declare @TEMPNAME nvarchar(25) = ''

declare @STARTDATE datetime = null
,@ENDDATE datetime = null
,@TEMPDATE datetime = null

set @SELECTEDWEEKPARAMETER = 0  --Reserve for the next phase


if @FILTERMODEPARAMETER = 2
begin
    declare @FIRSTDAYOFMONTH datetime = null
    ,@LASTDAYOFMONTH datetime = null
    ,@TOTALDAYOFMONTH integer = 0
    ,@COUNTER integer = 0

    if @SELECTEDMONTHPARAMETER = 0 and @SELECTEDWEEKPARAMETER = 0 --Yearly report

        begin
            --Yearly report will show total of 12 month period

            set @COUNTER = 1
            while (@COUNTER <= 12)
            begin
                set @STARTDATE = dateadd(m,@COUNTER-1,dateadd(yyyy,@SELECTEDYEARPARAMETER-1900,0))
                set @ENDDATE =  dateadd(dd,-1,dateadd(m,1,@STARTDATE))

                set @TEMPNAME = datename(month,@STARTDATE)

                ----Transactional and General purpose email jobs - StatusCode = 2: Completed jobs

                select @TRANSACTIONALNUMOFEMAILJOBS=NUMOFEMAILJOBS from dbo.UFN_GET_EMAILPROCESS_JOBSTATUS(@STARTDATE,@ENDDATE,1,0,0,1,0,0,0,0,null,null,@COMPLETEDLABELPARAMETER,null,null,null,null)
                select @GENERALPURPOSENUMOFEMAILJOBS=NUMOFEMAILJOBS from dbo.UFN_GET_EMAILPROCESS_JOBSTATUS(@STARTDATE,@ENDDATE,0,0,0,1,0,0,0,0,null,null,@COMPLETEDLABELPARAMETER,null,null,null,null)

                INSERT INTO @ALLEMAILJOBSTEMPTABLE(DATECHANGED, TIMECHANGED,NUMOFTRANSACTIONALEMAILJOBS, NUMOFGENERALPURPOSEEMAILJOBS)
                VALUES(@ENDDATE,@TEMPNAME,@TRANSACTIONALNUMOFEMAILJOBS,@GENERALPURPOSENUMOFEMAILJOBS)
                --VALUES(@STARTDATE,convert(nvarchar,@ENDDATE),@TRANSACTIONALNUMOFEMAILJOBS,@GENERALPURPOSENUMOFEMAILJOBS)


                set @COUNTER = @COUNTER + 1
            end

        end
    else if @SELECTEDWEEKPARAMETER = 0 --Monthly report

        begin
            set @FIRSTDAYOFMONTH = dateadd(m,@SELECTEDMONTHPARAMETER-1,dateadd(yyyy,@SELECTEDYEARPARAMETER-1900,0))
            set @LASTDAYOFMONTH =  dateadd(dd,-1,dateadd(m,1,@FIRSTDAYOFMONTH))

            set @TOTALDAYOFMONTH = datediff(D,@FIRSTDAYOFMONTH,@LASTDAYOFMONTH)

            set @STARTDATE = @FIRSTDAYOFMONTH
            while (@COUNTER <= @TOTALDAYOFMONTH)
            begin
                set @ENDDATE = dateadd(dd,@COUNTER,@FIRSTDAYOFMONTH + 1)
                set @TEMPNAME = @COUNTER+1                

                ----Transactional and General purpose email jobs - StatusCode = 2: Completed jobs

                select @TRANSACTIONALNUMOFEMAILJOBS=NUMOFEMAILJOBS from dbo.UFN_GET_EMAILPROCESS_JOBSTATUS(@STARTDATE,@ENDDATE,1,0,0,1,0,0,0,0,null,null,@COMPLETEDLABELPARAMETER,null,null,null,null)
                select @GENERALPURPOSENUMOFEMAILJOBS=NUMOFEMAILJOBS from dbo.UFN_GET_EMAILPROCESS_JOBSTATUS(@STARTDATE,@ENDDATE,0,0,0,1,0,0,0,0,null,null,@COMPLETEDLABELPARAMETER,null,null,null,null)

                INSERT INTO @ALLEMAILJOBSTEMPTABLE(DATECHANGED, TIMECHANGED,NUMOFTRANSACTIONALEMAILJOBS, NUMOFGENERALPURPOSEEMAILJOBS)
                VALUES(@ENDDATE,@TEMPNAME,@TRANSACTIONALNUMOFEMAILJOBS,@GENERALPURPOSENUMOFEMAILJOBS)
                --VALUES(@STARTDATE,convert(nvarchar,@ENDDATE),@TRANSACTIONALNUMOFEMAILJOBS,@GENERALPURPOSENUMOFEMAILJOBS)


                set @STARTDATE = @ENDDATE
                set @COUNTER = @COUNTER + 1
            end
        end

    select 
    DATECHANGED
    ,TIMECHANGED
    ,case when @ISINCLUDETRANSACTIONALEMAILJOBSPARAMETER = 0 then null else NUMOFTRANSACTIONALEMAILJOBS end as NUMOFTRANSACTIONALEMAILJOBS
    ,case when @ISINCLUDEGENERALPURPOSEEMAILJOBSPARAMETER = 0 then null else NUMOFGENERALPURPOSEEMAILJOBS end as NUMOFGENERALPURPOSEEMAILJOBS
    from @ALLEMAILJOBSTEMPTABLE  

end

else  --@FILTERMODEPARAMETER = 0 OR @FILTERMODEPARAMETER = 1


begin
      declare @TODAY date = getdate()
      declare @STARTTIME integer = 0
      ,@ENDTIME integer = 0
      ,@TIMECOUNTER integer = 0     

      while @TIMECOUNTER < 24
      begin                       
                if @TIMECOUNTER = 0
                    set @ENDTIME = @TIMECOUNTER + 2
                else
                begin
                    set @STARTTIME = @ENDTIME
                    set @ENDTIME = @ENDTIME + 2
                end                                        

                if @FILTERMODEPARAMETER = 0
                begin
                    --Reset time to 0 hour for today date

                    set @TEMPDATE = dateadd(hh,0,cast(@TODAY as datetime));
                end
                else if @FILTERMODEPARAMETER = 1
                begin
                    if @SPECIFICDATEPARAMETER is null 
                        set @TEMPDATE = dateadd(hh,0,cast(@TODAY as datetime));
                    else --Reset time to 0 hour for specific date        

                        set @TEMPDATE = dateadd(hh,0,cast(@SPECIFICDATEPARAMETER as datetime))
                end

                  set @STARTDATE = dateadd(hh,@STARTTIME,@TEMPDATE)
                set @ENDDATE = dateadd(hh,@ENDTIME,@TEMPDATE)

                declare @STARTHOURPART integer = datepart(hh,@STARTDATE);
                declare @ENDHOURPART integer = datepart(hh,@ENDDATE);

                -- modify to 12 hour format

                declare @ENDHOURSUFFIX nvarchar(2) = case when @ENDHOURPART >= 12 then 'PM' else 'AM' end;

                set @STARTHOURPART = case when @STARTHOURPART = 0 then 12
                                          when @STARTHOURPART > 12 then @STARTHOURPART - 12
                                          else @STARTHOURPART
                                     end;
                set @ENDHOURPART = case when @ENDHOURPART = 0 then 12
                                        when @ENDHOURPART > 12 then @ENDHOURPART - 12
                                        else @ENDHOURPART
                                   end;

                set @TEMPNAME = cast(@STARTHOURPART as nvarchar(2)) + ' - ' + cast(@ENDHOURPART as nvarchar(2)) + @ENDHOURSUFFIX;

                ----Transactional and General purpose email jobs - StatusCode = 2: Completed jobs

                  select @TRANSACTIONALNUMOFEMAILJOBS=NUMOFEMAILJOBS from dbo.UFN_GET_EMAILPROCESS_JOBSTATUS(@STARTDATE,@ENDDATE,1,0,0,1,0,0,0,0,null,null,@COMPLETEDLABELPARAMETER,null,null,null,null)
                  select @GENERALPURPOSENUMOFEMAILJOBS=NUMOFEMAILJOBS from dbo.UFN_GET_EMAILPROCESS_JOBSTATUS(@STARTDATE,@ENDDATE,0,0,0,1,0,0,0,0,null,null,@COMPLETEDLABELPARAMETER,null,null,null,null)

                INSERT INTO @ALLEMAILJOBSTEMPTABLE(DATECHANGED, TIMECHANGED,NUMOFTRANSACTIONALEMAILJOBS, NUMOFGENERALPURPOSEEMAILJOBS)
                VALUES(@STARTDATE,@TEMPNAME,@TRANSACTIONALNUMOFEMAILJOBS,@GENERALPURPOSENUMOFEMAILJOBS)

                set @TIMECOUNTER = @TIMECOUNTER + 2
      end

select 
DATECHANGED
,TIMECHANGED
,case when @ISINCLUDETRANSACTIONALEMAILJOBSPARAMETER = 0 then null else NUMOFTRANSACTIONALEMAILJOBS end as NUMOFTRANSACTIONALEMAILJOBS
,case when @ISINCLUDEGENERALPURPOSEEMAILJOBSPARAMETER = 0 then null else NUMOFGENERALPURPOSEEMAILJOBS end as NUMOFGENERALPURPOSEEMAILJOBS
from @ALLEMAILJOBSTEMPTABLE  

end