This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
custom_reservatie_check [2017/09/28 23:57] kristof |
— (current) | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Custom check voor reservaties ====== | ||
| - | Stop een database trigger met de custom check in de database, de error die hierin wordt geraised zal netjes getoond worden in alle applicaties. | ||
| - | |||
| - | **Voorbeeld 1: Niet op dag zelf laten reserveren** | ||
| - | |||
| - | CREATE TRIGGER [Member].[TRMEMBERSET_CHECK_RESERVATION] ON [Member].[STMEMBERSET] FOR INSERT | ||
| - | AS | ||
| - | DECLARE @member_id int | ||
| - | DECLARE @count_reserverations int | ||
| - | DECLARE @seq int | ||
| - | DECLARE @reservation_date datetime | ||
| - | DECLARE @settype int | ||
| - | BEGIN | ||
| - | select @member_id = member_id from inserted | ||
| - | select @seq = set_sequence_no from inserted | ||
| - | select @settype = log_type from inserted | ||
| - | |||
| - | select @reservation_date = b.start_date | ||
| - | from inserted a, planner.stcalendar b | ||
| - | where a.cal_id = b.cal_id | ||
| - | |||
| - | IF | ||
| - | convert(datetime, | ||
| - | AND @settype <> 0 | ||
| - | BEGIN | ||
| - | RAISERROR ('Niet toegelaten van te reserveren op de dag zelf.', | ||
| - | DELETE from member.stmemberset where set_sequence_no = @seq | ||
| - | RETURN | ||
| - | END | ||
| - | END | ||
| - | |||
| - | **Voorbeeld 2: max 1 reservatie per locatie/dag en max 3verschillende dagen per week ** | ||
| - | |||
| - | Create TRIGGER [Member].[TRMEMBERSET_CHECK_RESERVATION] ON [Member].[STMEMBERSET] FOR INSERT | ||
| - | AS | ||
| - | DECLARE @member_id int | ||
| - | DECLARE @count_reserverations int | ||
| - | DECLARE @seq int | ||
| - | DECLARE @reservation_date datetime | ||
| - | DECLARE @settype int | ||
| - | DECLARE @room_id int | ||
| - | DECLARE @weekstart datetime | ||
| - | DECLARE @WeekEnd datetime | ||
| - | BEGIN | ||
| - | |||
| - | select @member_id = member_id from inserted | ||
| - | select @seq = set_sequence_no from inserted | ||
| - | select @settype = log_type from inserted | ||
| - | |||
| - | select @reservation_date = b.start_date | ||
| - | from inserted a, planner.stcalendar b | ||
| - | where a.cal_id = b.cal_id | ||
| - | |||
| - | select @room_id = b.room_id | ||
| - | from inserted a, planner.stcalendar b | ||
| - | where a.cal_id = b.cal_id | ||
| - | |||
| - | select @count_reserverations = (select count(*) | ||
| - | from member.stmemberset a, planner.stcalendar b | ||
| - | where convert(date, | ||
| - | and a.member_id = @member_id | ||
| - | and b.cal_group_id = 1 | ||
| - | and b.room_id = @room_id | ||
| - | and a.cal_id = b.cal_id | ||
| - | and a.cancelled = 0) | ||
| - | |||
| - | IF @count_reserverations > 1 | ||
| - | BEGIN | ||
| - | RAISERROR ('Niet toegelaten om meer dan 1 reservatie per toestel te doen per dag.' , 16, 1) | ||
| - | DELETE from member.stmemberset where set_sequence_no = @seq | ||
| - | RETURN | ||
| - | END | ||
| - | |||
| - | SELECT @weekstart = DATEADD(day, | ||
| - | SELECT @WeekEnd = | ||
| - | |||
| - | select @count_reserverations = (select count(dt.x) from (select convert(date, | ||
| - | from member.stmemberset a, planner.stcalendar b | ||
| - | where convert(date, | ||
| - | and a.member_id = 1 | ||
| - | and b.cal_group_id = 1 | ||
| - | and a.cal_id = b.cal_id | ||
| - | and a.cancelled = 0 | ||
| - | group by convert(date, | ||
| - | |||
| - | IF @count_reserverations > 3 | ||
| - | BEGIN | ||
| - | RAISERROR ('Niet toegelaten op meer dan 3 verschillende dagen per week te reserveren.' | ||
| - | DELETE from member.stmemberset where set_sequence_no = @seq | ||
| - | RETURN | ||
| - | END | ||
| - | |||
| - | |||
| - | END | ||