Mini Kabibi Habibi
PGDMP 8 7 } DepEdBatangasCity 9.2.4 9.2.4 O � 0 0 ENCODING ENCODING SET client_encoding = 'UTF8';
false � 0 0
STDSTRINGS
STDSTRINGS ( SET standard_conforming_strings = 'on';
false � 1262 32769 DepEdBatangasCity DATABASE � CREATE DATABASE "DepEdBatangasCity" WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'English_United States.1252' LC_CTYPE = 'English_United States.1252';
# DROP DATABASE "DepEdBatangasCity";
postgres false 2615 2200 public SCHEMA CREATE SCHEMA public;
DROP SCHEMA public;
postgres false � 0 0
SCHEMA public COMMENT 6 COMMENT ON SCHEMA public IS 'standard public schema';
postgres false 6 0 0 public ACL � REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO PUBLIC;
postgres false 6 � 3079 11727 plpgsql EXTENSION ? CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
DROP EXTENSION plpgsql;
false 0 0 EXTENSION plpgsql COMMENT @ COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
false 468 � 1255 32770 fsl_tr_ai() FUNCTION @ CREATE FUNCTION fsl_tr_ai() RETURNS trigger
LANGUAGE plpgsql
AS $$
DECLARE
TempStationEmployeeId INT;
TempStationId INT;
TempEmployeeId INT;
TempEmployeeLogId INT;
TempTimeInDate VARCHAR;
TempTimeOutDate VARCHAR;
TempEmployeeNumber INT;
BEGIN
TempEmployeeNumber = NEW."EmployeeNumber"::INTEGER;
/* OBJECTIVE IS TO AUTO TRANSFER DATA INTO EMPLOYEES LOGS */
/* CHECK EMPLOYEE STATIONS IF EXISTS */
/* PAIR PREVOUS TIMOUT OUT DONT LEAVE EMPTY TIME OUT */
/* UPDATE TO GET STATION ID FROM FACESCANNERDEVICE 3/13/2021 */
/* OLD SELECT * FROM "StationEmployees" WHERE "EmployeeId" = TempEmployeeNumber*/
IF EXISTS(SELECT "StationId" FROM "FaceScannerDevices" WHERE "FaceScannerDeviceId" = NEW."FaceScannerDeviceId") THEN
/* GET EMPLOYEE ID EXISTS IN EMPLOYEE STATION*/
SELECT "StationId" INTO TempStationId FROM "FaceScannerDevices" WHERE "FaceScannerDeviceId" = NEW."FaceScannerDeviceId";
/* OLD SELECT "StationEmployeeId", "StationId", "EmployeeId" INTO TempStationEmployeeId, TempStationId, TempEmployeeId FROM "StationEmployees" WHERE "EmployeeId" = TempEmployeeNumber;*/
/* THIS IS FOR SAME DATE */
IF EXISTS(SELECT * FROM "EmployeeLogs" WHERE "TimeInDate"::date >= Now()::date AND "TimeInDate"::date <= Now()::date AND "EmployeeId" = TempEmployeeNumber) THEN
/* GET EMPLOYEEID LOG EXITSTING ID */
SELECT "EmployeeLogId", "TimeOutDate" INTO TempEmployeeLogId, TempTimeOutDate FROM "EmployeeLogs" WHERE "EmployeeLogId" = (SELECT max("EmployeeLogId") FROM "EmployeeLogs" WHERE "EmployeeId" = TempEmployeeNumber);
/* UPDATE TIME OUT ON SAME DATE ELSE INSERT NEW DATA FOR TIME IN */
IF (TempTimeOutDate IS NULL OR TempTimeOutDate= '0001-01-01') THEN
UPDATE "EmployeeLogs" SET "TimeOutDate" = NEW."LogDateTime"::date, "TimeOut" = NEW."LogDateTime"::TIME WHERE "EmployeeLogId" = TempEmployeeLogId;
ELSE
IF TempEmployeeNumber <> 0 THEN
INSERT INTO "EmployeeLogs" ("EmployeeId", "StationId", "TimeInDate", "TimeOutDate", "TimeIn", "TimeOut", "IsApproved") VALUES (TempEmployeeNumber, TempStationId, NEW."LogDateTime"::date, '0001-01-01', NEW."LogDateTime"::TIME, '', false);
END IF;
END IF;
ELSE
/* CHECK RECORD ON SAME DATE */
IF EXISTS(SELECT * FROM "EmployeeLogs" WHERE "TimeInDate"::date >= Now()::date AND "TimeInDate"::date <= Now()::date AND "EmployeeId" = TempEmployeeNumber) THEN
/* UPDATE TIMOUTDATE IF WITHIN THE DAY */
UPDATE "EmployeeLogs" SET "TimeOutDate" = NEW."LogDateTime"::date, "TimeOut" = NEW."LogDateTime"::TIME WHERE "EmployeeLogId" = TempEmployeeLogId;
ELSE
IF EXISTS(SELECT "EmployeeLogId" FROM "EmployeeLogs" WHERE "TimeOutDate" = '0001-01-01 00:00:00' AND "TimeInDate"::date = NEW."LogDateTime"::date AND "EmployeeId" = TempEmployeeNumber) THEN
SELECT "EmployeeLogId", "TimeInDate"::date INTO TempEmployeeLogId, TempTimeInDate FROM "EmployeeLogs" WHERE "TimeOutDate" = '0001-01-01 00:00:00' AND "EmployeeId" = TempEmployeeNumber AND "TimeInDate"::date = NEW."LogDateTime"::date;
UPDATE "EmployeeLogs" SET "TimeOutDate" = NEW."LogDateTime"::date, "TimeOut" = NEW."LogDateTime"::TIME WHERE "EmployeeLogId" = TempEmployeeLogId;
ELSE
/* IT'S A NEW DAY INSERT NEW LOGS FOR EMPLOYEE */
IF TempEmployeeNumber <> 0 THEN
INSERT INTO "EmployeeLogs" ("EmployeeId", "StationId", "TimeInDate", "TimeOutDate", "TimeIn", "TimeOut", "IsApproved") VALUES (TempEmployeeNumber, TempStationId, NEW."LogDateTime"::date, '0001-01-01', NEW."LogDateTime"::TIME, '', false);
END IF;
END IF;
END IF;
END IF;
END IF;
RETURN NEW;
END;
$$;
"