add phep
All checks were successful
Deploy on Master Change / deploy (push) Successful in 1m12s

This commit is contained in:
2026-07-06 10:58:38 +07:00
parent 573ff17581
commit f5dce38e11
6 changed files with 398 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
package qldt
import (
"bytes"
"context"
"encoding/json"
"fmt"
@@ -198,3 +199,65 @@ func (c *Client) GetClassDashboard(ctx context.Context, token string, classID, c
}
return body, nil
}
func (c *Client) GetLeaveRequests(ctx context.Context, token string, classID, courseID int64, date string) ([]byte, error) {
u := fmt.Sprintf("%s/request-leave?classId=%d&courseId=%d&date=%s", c.baseURL, classID, courseID, date)
req, err := http.NewRequestWithContext(ctx, http.MethodGet, u, nil)
if err != nil {
return nil, err
}
c.setAuthHeaders(req, token)
resp, err := c.http.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
return nil, fmt.Errorf("qldt request-leave http %d: %s", resp.StatusCode, string(body))
}
return body, nil
}
func (c *Client) UpdateLeaveStatus(ctx context.Context, token string, leaveID int64, status string) ([]byte, error) {
payload := map[string]string{"status": status}
jsonData, _ := json.Marshal(payload)
u := fmt.Sprintf("%s/request-leave/%d/status", c.baseURL, leaveID)
req, err := http.NewRequestWithContext(ctx, http.MethodPatch, u, bytes.NewBuffer(jsonData))
if err != nil {
return nil, err
}
req.Header.Set("Content-Type", "application/json")
c.setAuthHeaders(req, token)
resp, err := c.http.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
// Fallback to POST method if PATCH is Method Not Allowed or Not Found
if resp.StatusCode == http.StatusMethodNotAllowed || resp.StatusCode == http.StatusNotFound {
req2, err2 := http.NewRequestWithContext(ctx, http.MethodPost, u, bytes.NewBuffer(jsonData))
if err2 == nil {
req2.Header.Set("Content-Type", "application/json")
c.setAuthHeaders(req2, token)
resp2, errOr := c.http.Do(req2)
if errOr == nil {
defer resp2.Body.Close()
body2, _ := io.ReadAll(resp2.Body)
if resp2.StatusCode >= 200 && resp2.StatusCode < 300 {
return body2, nil
}
}
}
}
return nil, fmt.Errorf("qldt request-leave/%d/status http %d: %s", leaveID, resp.StatusCode, string(body))
}
return body, nil
}