Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
intranet-timesheet2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
project-open
intranet-timesheet2
Commits
813df5db
Commit
813df5db
authored
Oct 25, 2007
by
Frank Bergmann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- objectified version of im_user_absences
parent
391ccbaf
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
168 additions
and
4 deletions
+168
-4
intranet-absences-create.sql
sql/postgresql/intranet-absences-create.sql
+168
-4
No files found.
sql/postgresql/intranet-absences-create.sql
View file @
813df5db
...
...
@@ -17,8 +17,25 @@
-- @author frank.bergmann@project-open.com
-----------------------------------------------------------
-- Create the object type
SELECT
acs_object_type__create_type
(
'im_user_absence'
,
-- object_type
'Absence'
,
-- pretty_name
'Absences'
,
-- pretty_plural
'acs_object'
,
-- supertype
'im_user_absences'
,
-- table_name
'absence_id'
,
-- id_column
'intranet-timesheet2'
,
-- package_name
'f'
,
-- abstract_p
null
,
-- type_extension_table
'im_user_absence__name'
-- name_method
);
------------------------------------------------------
-- Absences
-- Absences
Table
--
...
...
@@ -37,6 +54,9 @@ begin
absence_id integer
constraint im_user_absences_pk
primary key,
absence_name varchar(1000),
owner_id integer
constraint im_user_absences_user_fk
references users,
...
...
@@ -46,14 +66,24 @@ begin
constraint im_user_absences_end_const not null,
description varchar(4000),
contact_info varchar(4000),
-- should this user receive email during the absence?
receive_email_p char(1) default
''
t
''
constraint im_user_absences_email_const
check (receive_email_p in (
''
t
''
,
''
f
''
)),
last_modified date,
-- Status and type for orderly objects...
absence_type_id integer
constraint im_user_absences_type_fk
references im_categories
constraint im_user_absences_type_const not null
constraint im_user_absences_type_nn
not null,
absence_status_id integer
constraint im_user_absences_status_fk
references im_categories
constraint im_user_absences_type_nn
not null
);
alter table im_user_absences add constraint owner_and_start_date_unique unique (owner_id,start_date);
...
...
@@ -69,6 +99,104 @@ drop function inline_0 ();
-----------------------------------------------------------
-- Create, Drop and Name PlPg/SQL functions
--
-- These functions represent creator/destructor
-- functions for the OpenACS object system.
create
or
replace
function
im_user_absence__name
(
integer
)
returns
varchar
as
'
DECLARE
p_absence_id alias for $1;
v_name varchar(2000);
BEGIN
select absence_name into v_name
from im_user_absences
where absence_id = p_absence_id;
-- compatibility fallback
IF v_name is null THEN
select substring(description for 1900) into v_name
from im_user_absences
where absence_id = p_absence_id;
END IF;
return v_name;
end;'
language
'plpgsql'
;
create
or
replace
function
im_user_absence__new
(
integer
,
varchar
,
timestamptz
,
integer
,
varchar
,
integer
,
varchar
,
integer
,
timestamptz
,
timestamptz
,
integer
,
integer
,
varchar
,
varchar
)
returns
integer
as
'
DECLARE
p_absence_id alias for $1; -- absence_id default null
p_object_type alias for $2; -- object_type default
''
im_user_absence
''
p_creation_date alias for $3; -- creation_date default now()
p_creation_user alias for $4; -- creation_user default null
p_creation_ip alias for $5; -- creation_ip default null
p_context_id alias for $6; -- context_id default null
p_absence_name alias for $7; -- absence_name
p_owner_id alias for $8; -- owner_id
p_start_date alias for $9;
p_end_date alias for $10;
p_absence_status_id alias for $11;
p_absence_type_id alias for $12;
p_description alias for $13;
p_contact_info alias for $14;
v_absence_id integer;
BEGIN
v_absence_id := acs_object__new (
p_absence_id, -- object_id
p_object_type, -- object_type
p_creation_date, -- creation_date
p_creation_user, -- creation_user
p_creation_ip, -- creation_ip
p_context_id, -- context_id
''
f
''
-- security_inherit_p
);
insert into im_user_absences (
absence_id, absence_name,
owner_id, start_date, end_date,
absence_status_id, absence_type_id,
description, contact_info
) values (
v_absence_id, p_absence_name,
p_owner_id, p_start_date, p_end_date,
p_absence_status_id, p_absence_type_id,
p_description, p_contact_info
);
return v_absence_id;
END;'
language
'plpgsql'
;
create
or
replace
function
im_user_absence__delete
(
integer
)
returns
integer
as
'
DECLARE
p_absence_id alias for $1;
BEGIN
-- Delete any data related to the object
delete from im_user_absences
where absence_id = p_absence_id;
-- Finally delete the object iself
PERFORM acs_object__delete(p_absence_id);
return 0;
end;'
language
'plpgsql'
;
------------------------------------------------------
-- Absences Permissions
--
...
...
@@ -117,6 +245,17 @@ drop function inline_0 ();
-----------------------------------------------------------
-- Type and Status
--
-- 5000 - 5099 Intranet Absence types
-- 16000-16999 Intranet Absences (1000)
-- 16000-16099 Intranet Absence Status
-- 16100-16999 reserved
create
or
replace
function
inline_0
()
returns
integer
as
'
declare
...
...
@@ -126,8 +265,6 @@ begin
from im_categories where category_id = 5000;
if v_count > 0 then return 0; end if;
-- 5000 - 5099 Absence types
insert into im_categories ( CATEGORY_DESCRIPTION, ENABLED_P, CATEGORY_ID, CATEGORY, CATEGORY_TYPE) values
(
''''
,
''
f
''
,
''
5000
''
,
''
Vacation
''
,
''
Intranet Absence Type
''
);
insert into im_categories ( CATEGORY_DESCRIPTION, ENABLED_P, CATEGORY_ID, CATEGORY, CATEGORY_TYPE) values
...
...
@@ -143,7 +280,34 @@ select inline_0 ();
drop
function
inline_0
();
insert
into
im_categories
(
category_id
,
category
,
category_type
)
values
(
16000
,
'Active'
,
'Intranet Absences Status'
);
insert
into
im_categories
(
category_id
,
category
,
category_type
)
values
(
16002
,
'Deleted'
,
'Intranet Absences Status'
);
-----------------------------------------------------------
-- Create views for shortcut
--
create
or
replace
view
im_user_absence_status
as
select
category_id
as
absence_status_id
,
category
as
absence_status
from
im_categories
where
category_type
=
'Intranet Absences Status'
and
(
enabled_p
is
null
or
enabled_p
=
't'
);
create
or
replace
view
im_user_absence_types
as
select
category_id
as
absence_type_id
,
category
as
absence_type
from
im_categories
where
category_type
=
'Intranet Absences Type'
and
(
enabled_p
is
null
or
enabled_p
=
't'
);
-----------------------------------------------------------
-- On vacation?
-- on_vacation_p refers to the vacation_until column of the users table
-- it does not care about user_vacations!
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment