Example #1
0
        /// <summary>
        /// Create new stored procedure to check a pecific existing, for example: Editable, Revisable, ...
        /// </summary>
        /// <param name="storedProcedureName"></param>
        /// <param name="parameterString"></param>
        /// <param name="queryArray"></param>
        public static void CreateProcedureToCheckExisting(string storedProcedureName, string[] queryArray)
        {
            string queryString = "";

            queryString = " @FindIdentityID int " + "\r\n";
            queryString = queryString + " WITH ENCRYPTION " + "\r\n";
            queryString = queryString + " AS " + "\r\n";
            queryString = queryString + "   BEGIN " + "\r\n";

            queryString = queryString + "       DECLARE @ExistIdentityID Int " + "\r\n";
            queryString = queryString + "       SET @ExistIdentityID = -1 " + "\r\n";

            if (queryArray != null)
            {
                foreach (string subQuery in queryArray)
                {
                    queryString = queryString + "       DECLARE CursorLocal CURSOR LOCAL FOR " + subQuery + "\r\n";
                    queryString = queryString + "       OPEN CursorLocal " + "\r\n";
                    queryString = queryString + "       FETCH NEXT FROM CursorLocal INTO @ExistIdentityID " + "\r\n";
                    queryString = queryString + "       CLOSE CursorLocal " + "\r\n";
                    queryString = queryString + "       DEALLOCATE CursorLocal " + "\r\n";
                    queryString = queryString + "       IF @ExistIdentityID != -1  RETURN @ExistIdentityID " + "\r\n";
                }
            }

            queryString = queryString + "       RETURN @ExistIdentityID " + "\r\n";
            queryString = queryString + "   END " + "\r\n";

            SQLDatabase.CreateStoredProcedure(storedProcedureName, queryString);
        }
Example #2
0
        private static void RestoreProcedure()
        {
            string queryString = "";



            /// <summary>
            /// Get UserID Information of UserID at ChangeDate
            /// </summary>
            queryString = "  @UserID Int, @ChangeDate DateTime " + "\r\n";
            queryString = queryString + "  WITH ENCRYPTION " + "\r\n";
            queryString = queryString + "  AS " + "\r\n";
            queryString = queryString + "    BEGIN " + "\r\n";

            queryString = queryString + "       IF @UserID = 0 " + "\r\n";
            queryString = queryString + "           SELECT  ListEmployee.EmployeeID AS UserID, 1 AS UserOrganizationID " + "\r\n";
            queryString = queryString + "           FROM ListEmployee " + "\r\n";
            queryString = queryString + "       ELSE " + "\r\n";
            queryString = queryString + "           SELECT  TOP 1 ListEmployee.EmployeeID AS UserID, 1 AS UserOrganizationID " + "\r\n";
            queryString = queryString + "           FROM ListEmployee " + "\r\n";
            queryString = queryString + "           WHERE   ListEmployee.EmployeeID = @UserID " + "\r\n";

            queryString = queryString + "    END " + "\r\n";

            SQLDatabase.CreateStoredProcedure("SPGetUserInformation", queryString);



            /// <summary>
            /// Get the top level permission for a specific UserID on a specific TaskID
            /// </summary>
            queryString = " @UserID Int, @TaskID Int " + "\r\n";
            queryString = queryString + " WITH ENCRYPTION " + "\r\n";
            queryString = queryString + " AS " + "\r\n";
            queryString = queryString + "   SELECT      ISNULL(MAX(ACLEditable), 0) AS MaxACLEditable FROM PublicAccessControl " + "\r\n";
            queryString = queryString + "   WHERE       UserID = @UserID AND TaskID = @TaskID " + "\r\n";

            SQLDatabase.CreateStoredProcedure("SPMaxACLEditable", queryString);



            /// <summary>
            /// Get the permission for a specific UserID on a specific TaskID ON A SPECIFIC UserOrganizationID
            /// </summary>

            //VIEC GET EDITABLE: CO 2 TRUONG HOP
            //    '//A. Maintenance List (DANH MUC THAM KHAO): UserOrganizationID = 0 => CO QUYEN HAY KHONG MA THOI, BOI VI MAU TIN TRONG DANH SACH THAM KHAO LA CUA CHUNG => DO DO KHONG CAN DEN UserOrganizationID
            //    '//B. Transaction Data (CAC MAU TIN GIAO DICH - CAC MAU TIN CO CHU SO HUU), KHI DO CO 2 TINH HUONG:
            //        '//B.1 TINH HUONG 1: MAU TIN DA SAVE: (TUC LA DA CO CHU SO HUU - CO UserOrganizationID): NGUOI DANG TRUY CAP CO QUYEN EDIT TREN MAU TIN CO CHU SO HUU HAY KHONG?
            //        '//B2. TINH HUONG 2:
            //                '//B.2: NGUOI DUNG CO QUYEN EDITABLE TREN TASKID, NHUNG KHONG BIET CO QUYEN TREN MOT DON VI CU THE UserOrganizationID HAY KHONG?
            //                '//B.2: THEM VAO DO, TAI THOI DIEM EDIT, CHUA XAC DINH MAU TIN THUOC VE AI, KHI DO UserOrganizationID = 0,
            //                '//B.2: DO DO CUNG CHI XAC DINH DUA TREN QUYEN EDITABLE CUA TASKID CUA UserID HIEN HANH MA THOI
            //                '//B.2: KHI SAVE (HOAC HAY HON LA KHI CHON CHU SO HUU - VI DU: CHON UserID TRONG QUOTATION) TA MOI XAC DINH DUOC UserOrganizationID
            //                '//B.2: DEN LUC NAY VIEC XAC DINH QUYEN EDITABLE LA CU THE ROI, DO DO NEU KHONG CO QUYEN EDITABLE CHO MOT DON VI CU THE => THI SE KHONG CHO SAVE

            queryString = " @UserID Int, @TaskID Int, @UserOrganizationID Int " + "\r\n";
            queryString = queryString + " WITH ENCRYPTION " + "\r\n";
            queryString = queryString + " AS " + "\r\n";

            queryString = queryString + "   IF @UserOrganizationID > 0  " + "\r\n"; // CHI CO T/H B.1

            queryString = queryString + "       SELECT      ISNULL(MAX(ACLEditable), 0) AS MaxACLEditable FROM PublicAccessControl " + "\r\n";
            queryString = queryString + "       WHERE       UserID = @UserID AND TaskID = @TaskID AND UserOrganizationID = @UserOrganizationID " + "\r\n";

            queryString = queryString + "   ELSE " + "\r\n"; //AP DUNG CHO TRUONG T/H A + T/H B.2

            queryString = queryString + "       SELECT      ISNULL(MAX(ACLEditable), 0) AS MaxACLEditable FROM PublicAccessControl " + "\r\n";
            queryString = queryString + "       WHERE       UserID = @UserID AND TaskID = @TaskID " + "\r\n";

            SQLDatabase.CreateStoredProcedure("SPUserACLEditable", queryString);
        }