00001: CREATE Function SY_MG 00002: ( 00003: @CurrentUser int, 00004: @Sort1 as nvarchar(50), 00005: @Desc1 as bit 00006: ) 00007: RETURNS TABLE 00008: AS 00009: RETURN SELECT top 4294967295 00010: 00011: [ID], 00012: dbo.FN_User_GetUserName(SenderID,@CurrentUser) as 'Получатель', 00013: dbo.FN_User_GetUserName(RecipientID,@CurrentUser) as 'Отправитель', 00014: [Text] As 'Текст сообщения', 00015: ToOrder as 'Заказ', 00016: ToMsg as 'К сообщению', 00017: IsConfirm 'Уведомление о получении', 00018: IsConfirmJob as 'Уведомление об исполнении', 00019: IsJob as 'Задача', 00020: SenderComp as 'Комп Отправителя', 00021: SenderDate as 'Дата', 00022: PopUpDelay 'Время всплытия', 00023: ReadDate as 'Дата получения', 00024: ReadNotif as 'Требуется уведомление', 00025: ConfirmNeeded as 'Требуется подтверждение', 00026: JobCompleteNotif 'Требуется исполнение', 00027: ReadComp as 'Комп Получателя', 00028: JobComleteDate as 'Дата исполнения', 00029: JobComleteComp as 'Комп исполнения', 00030: LiveType,LiveTime as 'Время жизни', 00031: sFilename as 'Прилагается файл', 00032: SY_MG_Priority.sName as 'Приоритет', 00033: SY_MG_LiveTimeType.sName as 'Срок жизни', 00034: DeleteTime as 'Дата удаления', 00035: SenderID, 00036: FileContent, 00037: RecipientType, 00038: RecipientID, 00039: Code, 00040: SenderUser.sName as SenderUser_sName , 00041: SenderUser.sFullName as SenderUser_FullName, 00042: Priority, 00043: RecipientUser.sName as RecipientUser_Name, 00044: RecipientUser.sFullName as RecipientUser_FullName 00045: 00046: 00047: FROM SY_Mg_Log 00048: join SY_Users as SenderUser on SY_Mg_Log.[SenderID] = SenderUser.sID 00049: join SY_Users as RecipientUser on SY_Mg_Log.[RecipientID]= RecipientUser.sID 00050: join SY_MG_Priority on SY_Mg_Log.[Priority] = SY_MG_Priority.sID 00051: join SY_MG_LiveTimeType on SY_Mg_Log.[LiveType] = SY_MG_LiveTimeType.sID 00052: order by 00053: Case When (@Sort1='Priority' or @Sort1='') and @Desc1=1 Then Priority Else Null End Desc, 00054: Case When (@Sort1='Priority' or @Sort1='') and @Desc1=0 Then Priority Else Null End Asc , 00055: Case When (@Sort1='[ID]' or @Sort1='ID') and @Desc1=1 Then [ID] Else Null End Desc, 00056: Case When (@Sort1='[ID]' or @Sort1='ID') and @Desc1=0 Then [ID] Else Null End Asc , 00057: Case When @Sort1='Приоритет' and @Desc1=1 Then SY_MG_Priority.sName Else Null End Desc, 00058: Case When @Sort1='Приоритет' and @Desc1=0 Then SY_MG_Priority.sName Else Null End Asc , 00059: Case When @Sort1='RecipientID' and @Desc1=1 Then RecipientID Else Null End Desc, 00060: Case When @Sort1='RecipientID' and @Desc1=0 Then RecipientID Else Null End Asc , 00061: Case When @Sort1='SenderID' and @Desc1=1 Then SenderID Else Null End Desc, 00062: Case When @Sort1='SenderID' and @Desc1=0 Then SenderID Else Null End Asc , 00063: Case When @Sort1='Текст сообщения' and @Desc1=1 Then [Text] Else Null End Desc, 00064: Case When @Sort1='Текст сообщения' and @Desc1=0 Then [Text] Else Null End Asc , 00065: Case When @Sort1='Заказ' and @Desc1=1 Then ToOrder Else Null End Desc, 00066: Case When @Sort1='Заказ' and @Desc1=0 Then ToOrder Else Null End Asc , 00067: Case When @Sort1='К сообщению' and @Desc1=1 Then ToMsg Else Null End Desc, 00068: Case When @Sort1='К сообщению' and @Desc1=0 Then ToMsg Else Null End Asc , 00069: Case When @Sort1='Комп Отправителя' and @Desc1=1 Then SenderComp Else Null End Desc, 00070: Case When @Sort1='Комп Отправителя' and @Desc1=0 Then SenderComp Else Null End Asc , 00071: Case When @Sort1='Дата' and @Desc1=1 Then SenderDate Else Null End Desc, 00072: Case When @Sort1='Дата' and @Desc1=0 Then SenderDate Else Null End Asc , 00073: Case When @Sort1='Время всплытия' and @Desc1=1 Then PopUpDelay Else Null End Desc, 00074: Case When @Sort1='Время всплытия' and @Desc1=0 Then PopUpDelay Else Null End Asc , 00075: Case When @Sort1='Задача' and @Desc1=1 Then IsJob Else Null End Desc, 00076: Case When @Sort1='Задача' and @Desc1=0 Then IsJob Else Null End Asc , 00077: Case When @Sort1='Требуется уведомление' and @Desc1=1 Then ReadNotif Else Null End Desc, 00078: Case When @Sort1='Требуется уведомление' and @Desc1=0 Then ReadNotif Else Null End Asc , 00079: Case When @Sort1='Требуется исполнение' and @Desc1=1 Then JobCompleteNotif Else Null End Desc, 00080: Case When @Sort1='Требуется исполнение' and @Desc1=0 Then JobCompleteNotif Else Null End Asc , 00081: Case When @Sort1='Требуется подтверждение' and @Desc1=1 Then ConfirmNeeded Else Null End Desc, 00082: Case When @Sort1='Требуется подтверждение' and @Desc1=0 Then ConfirmNeeded Else Null End Asc , 00083: Case When @Sort1='Дата получения' and @Desc1=1 Then ReadDate Else Null End Desc, 00084: Case When @Sort1='Дата получения' and @Desc1=0 Then ReadDate Else Null End Asc , 00085: Case When @Sort1='Комп Получателя' and @Desc1=1 Then ReadComp Else Null End Desc, 00086: Case When @Sort1='Комп Получателя' and @Desc1=0 Then ReadComp Else Null End Asc , 00087: Case When @Sort1='Дата исполнения' and @Desc1=1 Then JobComleteDate Else Null End Desc, 00088: Case When @Sort1='Дата исполнения' and @Desc1=0 Then JobComleteDate Else Null End Asc , 00089: Case When @Sort1='Комп исполнения' and @Desc1=1 Then JobComleteComp Else Null End Desc, 00090: Case When @Sort1='Комп исполнения' and @Desc1=0 Then JobComleteComp Else Null End Asc , 00091: Case When @Sort1='LiveType' and @Desc1=1 Then LiveType Else Null End Desc, 00092: Case When @Sort1='LiveType' and @Desc1=0 Then LiveType Else Null End Asc , 00093: Case When @Sort1='Время жизни' and @Desc1=1 Then LiveTime Else Null End Desc, 00094: Case When @Sort1='Время жизни' and @Desc1=0 Then LiveTime Else Null End Asc , 00095: Case When @Sort1='Прилагается файл' and @Desc1=1 Then sFilename Else Null End Desc, 00096: Case When @Sort1='Прилагается файл' and @Desc1=0 Then sFilename Else Null End Asc , 00097: Case When @Sort1='Получатель' and @Desc1=1 Then dbo.FN_User_GetUserName(SenderID,@CurrentUser) Else Null End Desc, 00098: Case When @Sort1='Получатель' and @Desc1=0 Then dbo.FN_User_GetUserName(SenderID,@CurrentUser) Else Null End Asc , 00099: Case When @Sort1='SenderUser.sName' and @Desc1=1 Then SenderUser.sName Else Null End Desc, 00100: Case When @Sort1='SenderUser.sName' and @Desc1=0 Then SenderUser.sName Else Null End Asc , 00101: Case When @Sort1='SenderUser.sFullName' and @Desc1=1 Then SenderUser.sFullName Else Null End Desc, 00102: Case When @Sort1='SenderUser.sFullName' and @Desc1=0 Then SenderUser.sFullName Else Null End Asc , 00103: Case When @Sort1='Отправитель' and @Desc1=1 Then dbo.FN_User_GetUserName(RecipientID,@CurrentUser) Else Null End Desc, 00104: Case When @Sort1='Отправитель' and @Desc1=0 Then dbo.FN_User_GetUserName(RecipientID,@CurrentUser) Else Null End Asc , 00105: Case When @Sort1='RecipientUser.sName' and @Desc1=1 Then RecipientUser.sName Else Null End Desc, 00106: Case When @Sort1='RecipientUser.sName' and @Desc1=0 Then RecipientUser.sName Else Null End Asc , 00107: Case When @Sort1='RecipientUser.sFullName' and @Desc1=1 Then RecipientUser.sFullName Else Null End Desc, 00108: Case When @Sort1='RecipientUser.sFullName' and @Desc1=0 Then RecipientUser.sFullName Else Null End Asc , 00109: Case When @Sort1='Срок жизни' and @Desc1=1 Then SY_MG_LiveTimeType.sName Else Null End Desc, 00110: Case When @Sort1='Срок жизни' and @Desc1=0 Then SY_MG_LiveTimeType.sName Else Null End Asc , 00111: Case When @Sort1='Уведомление о получении' and @Desc1=1 Then IsConfirm Else Null End Desc, 00112: Case When @Sort1='Уведомление о получении' and @Desc1=0 Then IsConfirm Else Null End Asc , 00113: Case When @Sort1='Уведомление об исполнении'and @Desc1=1 Then IsConfirmJob Else Null End Desc, 00114: Case When @Sort1='Уведомление об исполнении'and @Desc1=0 Then IsConfirmJob Else Null End Asc , 00115: Case When @Sort1='RecipientType' and @Desc1=1 Then RecipientType Else Null End Desc, 00116: Case When @Sort1='RecipientType' and @Desc1=0 Then RecipientType Else Null End Asc , 00117: Case When @Sort1='Code' and @Desc1=1 Then Code Else Null End Desc, 00118: Case When @Sort1='Code' and @Desc1=0 Then Code Else Null End Asc , 00119: Case When @Sort1='Дата удаления' and @Desc1=1 Then DeleteTime Else Null End Desc, 00120: Case When @Sort1='Дата удаления' and @Desc1=0 Then DeleteTime Else Null End Asc 00121: 00122: -------- 00123: 00124: CREATE FUNCTION FN_User_LoadVar (@SY_ID int, @NumVar as int, @IfEmpty as nvarchar(50)) RETURNS Nvarchar(50) 00125: as 00126: BEGIN 00127: Declare @Var nvarchar(50) 00128: If not exists(select * from SY_Users where @SY_ID = sID) set @Var= 'Нет такого логина' 00129: If not exists(select * from SY_VarsContainer where svarID=@NumVar and sUserID=@SY_ID) 00130: BEGIN --Default user 00131: -- и для него тоже ничего не указано 00132: If not exists(select * from SY_VarsContainer where svarID=@NumVar and sUserID=1) 00133: set @Var=@ifEmpty 00134: Else 00135: Select @Var=sVar from SY_VarsContainer where svarID=@NumVar and sUserID=1 00136: END 00137: ELSE Select @Var=sVar from SY_VarsContainer where svarID=@NumVar and sUserID=@SY_ID 00138: RETURN @Var 00139: END 00140: 00141: ------- 00142: 00143: create procedure SY_MG_JOB_CREATE 00144: as 00145: -- Script generated on 05.11.2005 3:19 00146: -- By: COMPUTER\Администратор 00147: -- Server: COMPUTER 00148: 00149: BEGIN TRANSACTION 00150: DECLARE @JobID BINARY(16) 00151: DECLARE @ReturnCode INT 00152: SELECT @ReturnCode = 0 00153: IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[Uncategorized (Local)]') < 1 00154: EXECUTE msdb.dbo.sp_add_category @name = N'[Uncategorized (Local)]' 00155: 00156: -- Delete the job with the same name (if it exists) 00157: SELECT @JobID = job_id 00158: FROM msdb.dbo.sysjobs 00159: WHERE (name = N'Очистка устаревших почтовых сообщений') 00160: IF (@JobID IS NOT NULL) 00161: BEGIN 00162: -- Check if the job is a multi-server job 00163: IF (EXISTS (SELECT * 00164: FROM msdb.dbo.sysjobservers 00165: WHERE (job_id = @JobID) AND (server_id <> 0))) 00166: BEGIN 00167: -- There is, so abort the script 00168: RAISERROR (N'Unable to import job ''Очистка устаревших почтовых сообщений'' since there is already a multi-server job with this name.', 16, 1) 00169: GOTO QuitWithRollback 00170: END 00171: ELSE 00172: -- Delete the [local] job 00173: EXECUTE msdb.dbo.sp_delete_job @job_name = N'Очистка устаревших почтовых сообщений' 00174: SELECT @JobID = NULL 00175: END 00176: 00177: BEGIN 00178: 00179: -- Add the job 00180: EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'Очистка устаревших почтовых сообщений', @owner_login_name = N'COMPUTER\Администратор', @description = N'Очистка устаревших сообщений', @category_name = N'[Uncategorized (Local)]', @enabled = 0, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 2, @delete_level= 0 00181: IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 00182: 00183: -- Add the job steps 00184: EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'Cleaner', @command = N'exec SY_MG_MessageDelete', @database_name = N'sva_cur', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2 00185: IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 00186: EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1 00187: 00188: IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 00189: 00190: -- Add the job schedules 00191: EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'Ежечасно', @enabled = 1, @freq_type = 4, @active_start_date = 20051105, @active_start_time = 0, @freq_interval = 1, @freq_subday_type = 4, @freq_subday_interval = 1, @freq_relative_interval = 0, @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959 00192: IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 00193: 00194: -- Add the Target Servers 00195: EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)' 00196: IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 00197: 00198: END 00199: COMMIT TRANSACTION 00200: GOTO EndSave 00201: QuitWithRollback: 00202: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION 00203: EndSave: 00204: 00205: ---------- 00206: 00207: CREATE procedure SY_MG_ReplayRobot 00208: @ID int, 00209: @ComputerName nvarchar(50), 00210: @CurrentUser int, 00211: @Confirm int, 00212: @Comlpete int 00213: as 00214: If (@Confirm=0 and @Comlpete=0) return(1) 00215: Declare @Notif as bit, @SenderID int, @Txt nvarchar(100),@Dt as Datetime, 00216: @JobCompleteNotif as bit, @SenderName as nvarchar(50),@iLivetime int , 00217: @iLiveTimeType int, @xMessage as nvarchar(250), @Ret int, @IsConfirm bit, @IsConfirmJob bit 00218: 00219: -- взяли все что надо для сообщения с записи, требующей подтверждения 00220: select @Notif=[Требуется уведомление], @SenderID=[SenderID],@Txt=Left([Текст сообщения],100),@Dt=[Дата], 00221: @SenderName=[Отправитель], @iLivetime=[Время жизни], @iLiveTimeType=[LiveType], @JobCompleteNotif= [Требуется исполнение] 00222: from SY_MG(@CurrentUser,'',0) where [ID]=@ID and @CurrentUser=[RecipientID] 00223: 00224: --@Confirm=1 - сообщение только что прочитано 00225: --@Comlpete=1 - только что подтверждено выполнение задачи 00226: --@Notif=1 - требуется подтвержение о прочтении 00227: --@JobCompleteNotif=1 - требуется подтверждение об исполнении 00228: 00229: If (@Confirm=1 and @Notif=1) 00230: Select @IsConfirm =1, @IsConfirmJob=0, 00231: @xMessage= 'Сообщение ('+cast(@ID as nvarchar(10))+') "'+@Txt+'..." , отправленное '+ cast(@Dt as nvarchar(30)) + ', было прочитано пользователем "'+@SenderName+ '" на компьютере "'+@ComputerName +'" '+cast(Getdate() as nvarchar(30)) 00232: 00233: else if (@Comlpete=1 and @JobCompleteNotif=1) 00234: Select @IsConfirm =0, @IsConfirmJob=1, 00235: @xMessage= 'Задача ('+cast(@ID as nvarchar(10))+') "'+@Txt+'..." , отправленная '+ cast(@Dt as nvarchar(30)) + ', была исполнена пользователем "'+@SenderName+ cast(Getdate() as nvarchar(30)) 00236: 00237: else if (@Confirm=1 and @Notif=1 and @Comlpete=1 and @JobCompleteNotif=1) 00238: Select @IsConfirm =1, @IsConfirmJob=1, 00239: @xMessage= 'Сообщение ('+cast(@ID as nvarchar(10))+') "'+@Txt+'..." , отправленное '+ cast(@Dt as nvarchar(30)) + ', было прочитано пользователем "'+@SenderName+ '" на компьютере "'+@ComputerName +'" '+cast(Getdate() as nvarchar(30))+ ' и задача отмечена как исполненная.' 00240: 00241: else return(1) 00242: 00243: EXEC @Ret= [SY_MG_MessageWrite] @ID= @SenderID,@CurrentUser=@CurrentUser, @MachineName=@ComputerName, 00244: @txMessage =@xMessage, @lNumZakaz =0, @sFilename =NULL, @FileContent=Default, 00245: @iPriority =1, @iLivetime =@iLivetime, @iLiveTimeType =@iLiveTimeType, 00246: @iPopUpTime =0, @IsTask =0, @IsTaskReplay =0, @IsAccept =0,@IsConfirmNeeded =0, 00247: @ToMsg =@ID, @RecipientType=0,@IsConfirm =@IsConfirm,@IsConfirmJob =@IsConfirmJob 00248: 00249: 00250: Return (@Ret) 00251: 00252: ---------- 00253: 00254: CREATE procedure SY_MG_ProfileWrite 00255: @sName nvarchar (50), 00256: @CurrentUser smallint , 00257: @Priority int, 00258: @LiveTime int, 00259: @LiveTimeType int, 00260: @PopUP int, 00261: @IsTask bit, 00262: @IsTaskReplay bit, 00263: @IsAccept bit, 00264: @IsConfirm bit 00265: as 00266: If not exists(select * from SY_MG_Profile where [sName]=@sName) 00267: INSERT INTO SY_MG_Profile ([sName], [CurrentUser], [Priority], [LiveTime], [LiveTimeType], [PopUP], [IsTask], [IsTaskReplay], [IsAccept], [IsConfirm]) 00268: VALUES(@sName,@CurrentUser,@Priority,@LiveTime,@LiveTimeType,@PopUP,@IsTask,@IsTaskReplay,@IsAccept,@IsConfirm) 00269: else 00270: UPDATE SY_MG_Profile 00271: SET [Priority]=@Priority, [LiveTime]=@LiveTime, [LiveTimeType]=@LiveTimeType, [PopUP]=@PopUP, [IsTask]=@IsTask, [IsTaskReplay]=@IsTaskReplay, [IsAccept]=@IsAccept, [IsConfirm]=@IsConfirm 00272: WHERE [sName]=@sName 00273: If @@rowcount=1 return(0) 00274: else return(1) 00275: 00276: ---------- 00277: 00278: CREATE procedure SY_MG_ProfileRead 00279: @CurrentUser smallint, 00280: @sName nvarchar(50) 00281: as 00282: select sName,Priority,LiveTime,LiveTimeType,PopUP,IsTask,IsTaskReplay,IsAccept,IsConfirm 00283: from SY_MG_Profile 00284: where CurrentUser=@CurrentUser and sName=@sName 00285: 00286: ----------- 00287: 00288: create procedure SY_MG_ProfileDelete 00289: @sName as nvarchar(50) 00290: as 00291: DELETE FROM SY_MG_Profile 00292: WHERE sName=@sName 00293: If @@RowCount=1 return(0) 00294: else return(1) 00295: 00296: ------------- 00297: 00298: create procedure SY_MG_ProfileCheck 00299: @CurrentUser smallint , 00300: @Priority int, 00301: @LiveTime int, 00302: @LiveTimeType int, 00303: @PopUP int, 00304: @IsTask bit, 00305: @IsTaskReplay bit, 00306: @IsAccept bit, 00307: @IsConfirm bit 00308: as 00309: select sName from SY_MG_Profile 00310: where [CurrentUser]=@CurrentUser and [Priority]=@Priority and [LiveTime]=@LiveTime and [LiveTimeType]=@LiveTimeType and 00311: [PopUP]=@PopUP and [IsTask]= @IsTask and [IsTaskReplay]=@IsTaskReplay and [IsAccept]=@IsAccept and [IsConfirm]=@IsConfirm 00312: 00313: ----------- 00314: 00315: CREATE procedure SY_MG_MessageWrite 00316: @ID smallint, 00317: @CurrentUser int, 00318: @MachineName nvarchar(50), 00319: @txMessage nvarchar(3500), 00320: @lNumZakaz int, 00321: @sFilename nvarchar(256), 00322: @FileContent ntext = NULL, 00323: @iPriority int, 00324: @iLivetime int, 00325: @iLiveTimeType int, 00326: @iPopUpTime int, 00327: @IsTask bit, 00328: @IsTaskReplay bit, 00329: @IsAccept bit, 00330: @IsConfirmNeeded bit, 00331: @ToMsg int, 00332: @RecipientType int, 00333: @IsConfirm bit, 00334: @IsConfirmJob bit 00335: as 00336: 00337: 00338: INSERT SY_Mg_Log([RecipientType], [RecipientID], 00339: [Code], [Text],[ToOrder], [ToMsg], [SenderID], [SenderComp], [SenderDate], 00340: [PopUpDelay], [Priority], [IsJob], [ReadNotif], [JobCompleteNotif], [ConfirmNeeded], 00341: [ReadDate], [ReadComp], [JobComleteDate], [JobComleteComp], 00342: [LiveType], [LiveTime],[sFilename],[FileContent],[IsConfirm],[IsConfirmJob]) 00343: VALUES(@RecipientType,@ID, 00344: 0, @txMessage, @lNumZakaz , @ToMsg, @CurrentUser, @MachineName, Getdate(), 00345: @iPopUpTime, @iPriority ,@IsTask ,@IsAccept , @IsTaskReplay , @IsConfirmNeeded, 00346: NULL, NULL, NULL, NULL, 00347: @iLiveTimeType, @iLivetime,@sFilename,@FileContent,@IsConfirm,@IsConfirmJob ) 00348: 00349: Declare @KolInsert as int 00350: set @KolInsert=@@Rowcount 00351: If @KolInsert<>1 Begin 00352: RAISERROR ('Ошибка. SY_MG_MessageWrite не записал сообщение.',16,1) 00353: Return(1) 00354: End 00355: 00356: If @iLiveTimeType is NULL Return(2) 00357: --без этого вся дальнейшая работа этой процедуры бессмысленна 00358: 00359: Declare @LiveTipe int,@LiveTime int, @SenderDate datetime 00360: select @LiveTipe=[LiveType], @LiveTime=[LiveTime],@SenderDate=[SenderDate] 00361: from SY_Mg_Log where [ID]=scope_identity() 00362: 00363: 00364: Declare @IsDay bit, @IsMinute bit 00365: select @IsDay=[IsDay], @IsMinute=[IsMinute] from SY_MG_LiveTimeType where [sID]=@LiveTipe 00366: 00367: If (@IsDay=0 and @IsMinute=0) return(6) --такой срок жизни сообщений обрабатывается иначе 00368: else if (@IsDay is Null and @IsMinute is NULL) begin 00369: RAISERROR ('Ошибка. Неверная структура таблицы SY_MG_LiveTimeType',16,1) 00370: Return(3) 00371: end 00372: else if (@IsDay=1 and @IsMinute=0) Begin 00373: -- срок жизни указан в днях 00374: update SY_Mg_Log set [DeleteTime]=DATEADD(d, @LiveTime,@SenderDate) 00375: where [ID]=scope_identity() 00376: IF @@Rowcount<>1 Return(4) 00377: end 00378: else if (@IsDay =0 and @IsMinute=1) Begin 00379: -- срок жизни указан в минутах 00380: update SY_Mg_Log set [DeleteTime]=DATEADD(n, @LiveTime,@SenderDate) 00381: where [ID]=scope_identity() 00382: IF @@Rowcount<>1 return(5) 00383: end 00384: 00385: return(0) 00386: 00387: -------- 00388: 00389: CREATE procedure SY_MG_MessageReadToolbar3 00390: @CurrentUser int =0 00391: as 00392: Declare @Sort as nvarchar(50),@Desc bit 00393: select @Sort='',@Desc=0 00394: select * 00395: from SY_MG(@CurrentUser,@Sort,@Desc) 00396: where RecipientID=@CurrentUser and [Комп получателя] is null 00397: 00398: ------------- 00399: 00400: CREATE procedure SY_MG_MessageReadToolbar 00401: 00402: @CurrentUser int =0, 00403: @Recipient as bit=1, -- отбор где CurrentUser отправитель 00404: @Sender as bit=1, -- отбор где CurrentUser получатель 00405: @JobsOnly as bit=0, -- доп фильтр только задач 00406: @JobsOnlyNotConfirmed as bit= 0 -- доп фильтр невыполненных задач 00407: as 00408: 00409: Declare @Sort as nvarchar(50),@Desc bit 00410: select @Sort='',@Desc=0 00411: 00412: select * 00413: from SY_MG(@CurrentUser,@Sort,@Desc) 00414: where (@JobsOnly=1 or [Задача]=1) 00415: and (@JobsOnlyNotConfirmed=1 or [Уведомление об исполнении] is NULL) 00416: and (@Recipient=1 or RecipientID=@CurrentUser) 00417: and (@Sender=1 or SenderID=@CurrentUser) 00418: 00419: ------------ 00420: 00421: CREATE procedure SY_MG_MessageReadOne 00422: @ID int, 00423: @CurrentUser int = 0 00424: as 00425: select * from SY_MG(@CurrentUser,'',0) where [ID]=@ID 00426: 00427: ------------ 00428: 00429: CREATE procedure SY_MG_MessageReadAll 00430: @CurrentUser int =0, 00431: @Recipient as bit=1, -- отбор где CurrentUser отправитель 00432: @Sender as bit=1, -- отбор где CurrentUser получатель 00433: @JobsOnly as bit=0, -- доп фильтр только задач 00434: @JobsOnlyNotConfirmed as bit= 0, -- доп фильтр невыполненных задач 00435: @Sort as nvarchar(50)='', -- порядок сортировки 00436: @Desc as bit=1, -- доп порядок сортировки ASC/DESC 00437: @Date1 as datetime ='01-01-1900', -- доп фильтр по датам - начальная 00438: @Date2 as datetime ='01-01-2100' -- конечная 00439: 00440: as 00441: select * 00442: from SY_MG(@CurrentUser,@Sort,@Desc) 00443: where([Дата] between @Date1 and @Date2) 00444: and ((@Recipient=0 or RecipientID=@CurrentUser) 00445: or (@Sender=0 or SenderID=@CurrentUser)) 00446: and (@JobsOnly=0 or [Задача]=1) 00447: and (@JobsOnlyNotConfirmed=0 or [Уведомление об исполнении] is NULL) 00448: 00449: --------- 00450: 00451: CREATE procedure SY_MG_MessageReadAdmin5 00452: @CurrentUser int =0, -- отбор - получатель и отправитель CurrentUser 00453: @Sort as nvarchar(50)='', -- порядок сортировки 00454: @Desc as bit=1, -- доп порядок сортировки ASC/DESC 00455: @Zakaz as bigint = 0 00456: as 00457: 00458: select * 00459: from SY_MG(@CurrentUser,@Sort,@Desc) 00460: where @Zakaz=[Заказ] and [Заказ]>0 00461: 00462: ------------ 00463: 00464: CREATE procedure SY_MG_MessageReadAdmin4 00465: @CurrentUser int =0, -- отбор - получатель и отправитель CurrentUser 00466: @Sort as nvarchar(50)='', -- порядок сортировки 00467: @Desc as bit=1 -- доп порядок сортировки ASC/DESC 00468: as 00469: 00470: select * 00471: from SY_MG(@CurrentUser,@Sort,@Desc) 00472: where SenderID=@CurrentUser and [Комп Получателя] is Null and [Требуется подтверждение]=1 00473: 00474: ------------ 00475: 00476: CREATE procedure SY_MG_MessageReadAdmin3 00477: @CurrentUser int =0, -- отбор - получатель и отправитель CurrentUser 00478: @Sort as nvarchar(50)='', -- порядок сортировки 00479: @Desc as bit=1 -- доп порядок сортировки ASC/DESC 00480: as 00481: 00482: select * 00483: from SY_MG(@CurrentUser,@Sort,@Desc) 00484: where SenderID=@CurrentUser and [Комп Получателя] is Null 00485: 00486: -------------- 00487: 00488: CREATE procedure SY_MG_MessageReadAdmin2 00489: @CurrentUser int =0, -- отбор - получатель и отправитель CurrentUser 00490: @Sort as nvarchar(50)='', -- порядок сортировки 00491: @Desc as bit=1, -- доп порядок сортировки ASC/DESC 00492: @Date1 as datetime ='01-01-1900', -- доп фильтр по датам - начальная 00493: @Date2 as datetime ='01-01-2100', -- конечная 00494: @JobsOnlyNotConfirmed as bit= 0 -- доп фильтр невыполненных задач 00495: as 00496: 00497: select * 00498: from SY_MG(@CurrentUser,@Sort,@Desc) 00499: where (SenderID=@CurrentUser) and ([Задача]=1) 00500: and (@JobsOnlyNotConfirmed=1 or ([Дата] between @Date1 and @Date2)) 00501: and (@JobsOnlyNotConfirmed=0 or ([Комп исполнения] is Null)) 00502: 00503: ------------ 00504: 00505: CREATE procedure SY_MG_MessageReadAdmin1 00506: @CurrentUser int =0, -- отбор - получатель и отправитель CurrentUser 00507: @Sort as nvarchar(50)='', -- порядок сортировки 00508: @Desc as bit=1, -- доп порядок сортировки ASC/DESC 00509: @Date1 as datetime ='01-01-1900', -- доп фильтр по датам - начальная 00510: @Date2 as datetime ='01-01-2100', -- конечная 00511: @JobsOnlyNotConfirmed as bit= 0 -- доп фильтр невыполненных задач 00512: as 00513: 00514: select * 00515: from SY_MG(@CurrentUser,@Sort,@Desc) 00516: where (RecipientID=@CurrentUser) and ([Задача]=1) 00517: and (@JobsOnlyNotConfirmed=1 or ([Дата] between @Date1 and @Date2)) 00518: and (@JobsOnlyNotConfirmed=0 or ([Комп исполнения] is Null)) 00519: 00520: 00521: ------------------ 00522: 00523: CREATE procedure SY_MG_MessageReadAdmin 00524: @CurrentUser int =0, -- отбор - получатель и отправитель CurrentUser 00525: @AdminUser as Int=0, -- опция админа (от кого переписка) 00526: @SetUser as int=0, -- с кем переписка 00527: @Sort1 as nvarchar(50)='', -- порядок сортировки 00528: @Desc1 as bit=1, -- доп порядок сортировки ASC/DESC 00529: @Date1 as datetime ='01-01-1900', -- доп фильтр по датам - начальная 00530: @Date2 as datetime ='01-01-2100', -- конечная 00531: @Sort2 as nvarchar(50)='', -- порядок сортировки 00532: @Desc2 as bit=1, -- доп порядок сортировки ASC/DESC 00533: @JobsOnly as bit=0 -- доп фильтр только задач 00534: as 00535: 00536: Declare @TableName as Nvarchar(50), @Select1 as Nvarchar(300) 00537: Select @TableName='SY_MG_TempTable_'+Replace(cast(newid() as nvarchar(36)),'-','_') 00538: select @Select1='select * Into '+@TableName+ 00539: ' from SY_MG('+cast(@CurrentUser as nvarchar(5))+','''+@Sort1+''','+cast(@Desc1 as nvarchar(1))+')'+ 00540: ' where([Дата] between '''+cast(@Date1 as nvarchar(50))+''' and '''+cast(@Date2 as nvarchar(50))+''')'+ 00541: ' and ('+cast(@JobsOnly as nvarchar(1))+'=0 or [Задача]=1)' 00542: 00543: --print @Select1 00544: exec(@Select1) 00545: 00546: Declare @Desc1_txt nchar(6), @Desc2_txt nchar(6), @Sort1_txt nchar(50), @Str1 nvarchar(1000) 00547: If @Desc1=1 set @Desc1_txt=' Desc ' 00548: else set @Desc1_txt=' Asc ' 00549: If @Desc2=1 set @Desc2_txt=' Desc ' 00550: else set @Desc2_txt=' Asc ' 00551: If @Sort1='' set @Sort1_txt='ID' 00552: else set @Sort1_txt=@Sort1 00553: 00554: Declare @Where nvarchar(100) 00555: If (@SetUser=0 and @AdminUser=0) set @Where='' 00556: else if (@SetUser<>0 and @AdminUser<>0) set @Where=' Where RecipientID=' +Cast(@SetUser as nvarchar(5)) + ' or SenderID=' + cast(@SetUser as nvarchar(5))+ ' or RecipientID='+ cast(@AdminUser as nvarchar(5))+ ' or SenderID='+ cast(@AdminUser as nvarchar(5)) 00557: else If (@SetUser=0 and @AdminUser<>0) set @Where=' Where RecipientID=' +cast(@AdminUser as nvarchar(5))+ ' or SenderID=' + cast(@AdminUser as nvarchar(5)) 00558: else If (@SetUser<>0 and @AdminUser=0) set @Where=' Where RecipientID=' +Cast(@SetUser as nvarchar(5))+ ' or SenderID=' + Cast(@SetUser as nvarchar(5)) 00559: 00560: If @Sort1<>@Sort2 set @Str1=@str1 + ',[' + @Sort2+ ']' + @Desc2_txt 00561: 00562: set @Str1='select * from '+@TableName+' '+ @Where +' order by ['+ @Sort1_txt + ']' + @Desc1_txt 00563: 00564: 00565: --raiserror( @str2,1,1) 00566: exec (@Str1) 00567: 00568: IF EXISTS(SELECT name 00569: FROM sysobjects 00570: WHERE name = @TableName 00571: AND type = 'U') 00572: exec('DROP TABLE '+@TableName) 00573: 00574: Return(0) 00575: 00576: ---------------- 00577: 00578: 00579: CREATE procedure SY_MG_MessageDeleteSeans 00580: @CurrentUser as int 00581: as 00582: delete from SY_Mg_Log 00583: where SenderID=@CurrentUser 00584: and exists(select [ID] from SY_MG_LiveTimeType 00585: where SY_MG_LOG.LiveType=SY_MG_LiveTimeType.sID and IsSeans=1) 00586: 00587: ----------------- 00588: 00589: 00590: Create procedure SY_MG_MessageDelete 00591: as 00592: delete from SY_Mg_Log 00593: where DeleteTime<Getdate() 00594: 00595: ---------------- 00596: 00597: CREATE procedure SY_MG_MessageConfirm 00598: @ID int, 00599: @ComputerName nvarchar(50), 00600: @CurrentUser int, 00601: @JobComlpete bit 00602: as 00603: -- 00604: --Отметка о прочтении 00605: -- 00606: UPDATE SY_Mg_Log 00607: SET [ReadComp]=@ComputerName, [ReadDate]=Getdate() 00608: WHERE [ID]=@ID and @CurrentUser=[RecipientID] and [ReadComp] is NULL 00609: Declare @Confirm int 00610: set @Confirm=@@Rowcount 00611: 00612: -- 00613: --Отметка об исполнении 00614: -- 00615: Declare @Comlpete int 00616: set @Comlpete=0 00617: If @JobComlpete=1 BEGIN 00618: UPDATE SY_Mg_Log 00619: SET [JobComleteComp]=@ComputerName, [JobComleteDate]=Getdate() 00620: WHERE [ID]=@ID and @CurrentUser=[RecipientID] and [JobComleteComp] is NULL 00621: set @Comlpete=@@Rowcount 00622: END 00623: -- 00624: --Теперь посылаем уведомление о прочтении 00625: -- 00626: Declare @Ret int,@RetCode int 00627: EXEC @Ret=SY_MG_ReplayRobot @ID,@ComputerName,@CurrentUser,@Confirm,@Comlpete 00628: 00629: set @RetCode=@Confirm*1 + @Comlpete*2 + @Ret*4 00630: Return (@RetCode) 00631: --@Ret = 0 при нормальной отправке одного сообщения, иначе 1 00632: --@Confirm=1 при постановке отметки о прочтении 00633: --@Comlpete=1 при постановке отметки об исполнении 00634: 00635: 00636: ------------------- 00637: 00638: create procedure SY_MG_DeleteJob 00639: @ID int, 00640: @Full bit 00641: as 00642: If @Full=1 00643: delete from SY_MG_Log where @ID=[ID] 00644: else 00645: UPDATE SY_MG_Log 00646: SET [JobComleteComp]='ОТМЕНЕНО', [JobComleteDate]=getdate() 00647: where @ID=[ID] 00648: 00649: --------------- 00650: 00651: CREATE procedure SY_MG_User 00652: @CurrentUser int = 1 00653: as 00654: select SY_Users.sid,dbo.FN_User_GetUserName(SY_Users.sid,@CurrentUser) as 'Name' from SY_Users where sStatus=1
Comments (
)
Link to this page:
//www.vb-net.com/wanted/message/Procedure.htm
|