SET ANSI_NULLS OFF
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET LOCK_TIMEOUT -1
SET QUOTED_IDENTIFIER OFF
GO

/**************** xpCA_CRMInspeccionXPasoAnexos ****************/
IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID('dbo.xpCA_CRMInspeccionXPasoAnexos') AND type = 'P')
    DROP PROCEDURE dbo.xpCA_CRMInspeccionXPasoAnexos
GO

/**************** xpCA_CRMInspeccionAnexos ****************/
IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID('dbo.xpCA_CRMInspeccionAnexos') AND type = 'P')
    DROP PROCEDURE dbo.xpCA_CRMInspeccionAnexos
GO

-- Si no existe la tabla, crearla
IF NOT EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID('dbo.CA_CRMInspeccionAnexos') AND type = 'U')
BEGIN
    CREATE TABLE dbo.CA_CRMInspeccionAnexos (
        ID              INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
        IDServicio      INT             NOT NULL,
        Ruta            VARCHAR(255)    COLLATE Modern_Spanish_CI_AS NOT NULL,
        NombreArchivo   VARCHAR(255)    COLLATE Modern_Spanish_CI_AS NOT NULL,
        Tipo            VARCHAR(100)    COLLATE Modern_Spanish_CI_AS NOT NULL,
        FileUUID        VARCHAR(36)     COLLATE Modern_Spanish_CI_AS NULL,
        IDPaso          INT             NOT NULL,
        IDCampo         INT             NULL,
        IDTipoAnexo     INT             NOT NULL
    );
END
GO

/****** Object:  StoredProcedure [dbo].[xpCA_CRMInspeccionAnexos] ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

CREATE PROCEDURE [dbo].[xpCA_CRMInspeccionAnexos]
    @IDServicio int,
    @IDTipoAnexo int,
    @NombreArchivo varchar(255),
    @Tipo varchar(100),
    @Ruta varchar(255),
    @VIN varchar(20) null,
    @IDPaso int
AS
BEGIN
    DECLARE @OldFileUUID varchar(255), @NewFileUUID varchar(36), @ID int, @OldID int, @Count int;
    
    SELECT @IDPaso = ISNULL(@IDPaso, 0);
    
    SELECT @OldID = ID, 
           @OldFileUUID = Ruta + FileUUID + Tipo
    FROM CA_CRMInspeccionAnexos
    WHERE IDServicio = @IDServicio 
      AND IDTipoAnexo = @IDTipoAnexo 
      AND IDPaso = @IDPaso 
      AND IDTipoAnexo <> 6;
   
    IF (@OldID IS NOT NULL)
        DELETE CA_CRMInspeccionAnexos WHERE ID = @OldID;
     
    SET @NewFileUUID = NEWID();
    WHILE EXISTS(SELECT FileUUID FROM CA_CRMInspeccionAnexos WHERE FileUUID = @NewFileUUID)
    BEGIN
        SET @NewFileUUID = NEWID();
    END
 
    INSERT INTO CA_CRMInspeccionAnexos(IDServicio, Ruta, NombreArchivo, Tipo, FileUUID, IDTipoAnexo, IDPaso)
    VALUES(@IDServicio, @Ruta, @NombreArchivo, @Tipo, @NewFileUUID, @IDTipoAnexo, @IDPaso);
    
    SELECT @Count = @@ROWCOUNT, @ID = SCOPE_IDENTITY();
 
    IF @Count = 0
    BEGIN
        SELECT 1 AS Ok, 'Ocurrió un error al intentar guardar la información del registro' AS OkRef;
        RETURN;
    END
 
    SELECT 0 AS Ok, 
           'Registro guardado correctamente: ' + @NewFileUUID AS OkRef, 
           @ID AS ID, 
           @NewFileUUID + @Tipo AS NewFileUUID, 
           @OldFileUUID AS OldFileUUID;
END
GO
