File size: 3,547 Bytes
4458876
 
34da3fd
4458876
34da3fd
4458876
34da3fd
 
 
 
 
 
 
 
4458876
34da3fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21f7901
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34da3fd
 
 
 
 
 
21f7901
 
 
 
 
 
 
 
 
 
 
 
34da3fd
 
 
4458876
34da3fd
4458876
34da3fd
 
4458876
34da3fd
 
 
 
4458876
34da3fd
 
 
4458876
34da3fd
4458876
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import os
import json
import gspread
from google.oauth2 import service_account
from datetime import datetime

class SheetsLogger:
    def __init__(self):
        self.gc = None
        self.sheet = None
        self.initialize_client()
        
    def initialize_client(self):
        """Initialize Google Sheets client"""
        try:
            # Get credentials from environment variable
            creds_json = os.getenv('GOOGLE_SHEETS_CREDS')
            if not creds_json:
                raise ValueError("Google Sheets credentials not found in environment")
            
            # Parse credentials JSON
            creds_dict = json.loads(creds_json)
            
            # Create credentials object
            credentials = service_account.Credentials.from_service_account_info(
                creds_dict,
                scopes=['https://spreadsheets.google.com/feeds',
                       'https://www.googleapis.com/auth/spreadsheets',
                       'https://www.googleapis.com/auth/drive']
            )
            
            # Initialize gspread client
            self.gc = gspread.authorize(credentials)
            
            # Open spreadsheet by ID (get this from your sheet's URL)
            SHEET_ID = os.getenv('GOOGLE_SHEET_ID')
            self.sheet = self.gc.open_by_key(SHEET_ID).sheet1
            
        except Exception as e:
            print(f"Error initializing Google Sheets client: {str(e)}")
            self.gc = None
            self.sheet = None

    def initialize_sheet(self):
        """Initialize sheet with headers if needed"""
        headers = [
            "Timestamp",
            "Name",
            "Employee ID",
            "Email",
            "Department",
            "Request Details",
            "Frequency",
            "Urgency",
            "User Summary",
            "Technical Analysis",
            "Status",  # For tracking request status
            "Notes"    # For additional comments
        ]
        
        try:
            # Check if headers exist
            existing_headers = self.sheet.row_values(1)
            if not existing_headers:
                self.sheet.insert_row(headers, 1)
        except Exception as e:
            print(f"Error initializing headers: {str(e)}")
    
    def log_request(self, data):
        """Log a request to Google Sheets"""
        if not self.sheet:
            return False
            
        try:
            row = [
                data.get('timestamp', ''),
                data.get('name', ''),
                data.get('employee_id', ''),
                data.get('email', ''),
                data.get('department', ''),
                data.get('request_details', ''),
                data.get('frequency', ''),
                data.get('urgency', ''),
                data.get('user_summary', ''),
                data.get('system_analysis', ''),
                'New',  # Initial status
                ''     # Empty notes
            ]
            
            self.sheet.append_row(row)
            return True
            
        except Exception as e:
            print(f"Error logging to sheet: {str(e)}")

    def get_all_requests(self):
        """Get all requests from the sheet"""
        if not self.sheet:
            return None
            
        try:
            # Get all records
            records = self.sheet.get_all_records()
            return records
        except Exception as e:
            print(f"Error getting records: {str(e)}")
            return None