Skip to content
Flavio Müller edited this page Oct 6, 2017 · 9 revisions

Welcome to the ProStudCreator wiki!

Setup

DB-Setup auf Server

  1. Sicherstellen dass SQL Server 2012 oder neuer verwendet wird.
  2. SQL Server Configuration Manager öffnen und bei SQL Server-Dienste die Eigenschaften des SQL Server (MSSQLSERVER) öffnen.
  3. Zum Tab FileStream navigieren und alle Checkboxen setzen.
  4. SQL Server (MSSQLSERVER) neu starten.
  5. FileGroup und File erstellen.
ALTER database ProStudCreator
ADD FILEGROUP fsfg_ProStudCreator
CONTAINS FILESTREAM
GO

ALTER database ProStudCreator
ADD FILE
(NAME= 'fs_ProStudCreator',
FILENAME = 'C:\ProStudCreator\fs_ProstudCreator')
TO FILEGROUP fsfg_ProStudCreator
GO

FILESTREAM_ON [fsfg_ProStudCreator]
  1. Filestream funktioniert nur mit integrated Security (Windows autentifizierung.) -> SQL Login für DefaultAppPool erstellen.
  2. Sicherstellen das der IIS User (´DefaultAppPool´) zugriffsrechte auf C:\ProStudCreator\fs_ProstudCreator hat.

Local-Setup

  1. Visual Studio, SQL Server Management Studio und SQL Server 2012 oder neuer (keine Express Editionen) herunterladen.
  2. Projekt in VS clonen.
  3. FileStream einschalten
  4. Datenbank an SQL Server anschliessen (query unten)
USE [master]
GO
CREATE DATABASE [aspnet-ProStudCreator-20140818043155] ON 
( FILENAME = N'<Path to mdf>' ),
( FILENAME = N'<Path to ldf' ),
FILEGROUP fsfg_ProStudCreator CONTAINS FILESTREAM DEFAULT 
( NAME = N'fs_ProStudCreator', FILENAME = N'<Path to repo>\ProStudCreator\fs_ProstudCreator' )
FOR ATTACH
GO

Task-Handler

Die Grundidee dieses Konstrukts ist die Benachrichtigung der Betreuer sowie der Admins über Arbeiten (weiterhin als Tasks gebraucht) die bald oder schon hätten gemacht werden sollen. Nachfolgend ist eine Auflistung aller zurzeit bekannten Tasks.

Admin-Tasks:

  • Verteidigung Organisieren
  • Experten Zahlen
  • Mail, das nun wieder Projekte eingereicht werden können
  • Projekte Veröffentlichen
  • Projektzuteilung mit Prodist
  • Nachzuteilung
  • Neue Semesterdaten eintragen
  • Link zur Ausstellungsbroschüre aktualisieren

Marketing-Tasks:

  • Export der Projekte
  • Export der Noten

Betreuer-Tasks:

  • Bewertungsbogen ausfüllen
  • Projektinfos eintragen (Noten, Durchführungsprache, etc.)
  • Verrechungstatus und Rechnungsadresse eintragen

Einige dieser Tasks sind abhänging von Projekten, fixen Daten oder eine Mischung aus den beiden.

Datenstruktur

RemindType

In dieser Tabelle gibt es Einträge über die verschienen Erinnerungs-Typen der Tasks. Dabei hat jeder Eintrag ein eigenes Flag.

TaskType

  • Description: Beschreibung was gemacht werden muss, um den Task zu erledigen.
  • RemindTypeId: FK-RemindType
  • TicksBetweenReminds: Anzahl der Ticks bis der Benutzer zum nächsten mal erinnert wird. (Kann bei RemindType RemindOnce weggelassen werden.) *Flags: Jeder Tasktype hat sein eigenes Flag, um die Tasks ihren Typen zuzuordnen.

Task

  • TaskTypeId: FK-TaskType
  • ProjectId: FK-Project (null wenn der Tasks nicht von einem Projekt abhängt.)
  • DueDate: DateTime bis wann der Task erledigt sein muss.
  • SupervisorId: FK-UserDepartmentMap (die jeweiligen Verantwortlichen der Institute (Simon Felix, Dominik Gruntz), Supervisor werden benachrichtigt, wenn ein Task der in weniger als 3 Tagen abgeschlossen werden muss immer noch offen ist.)
  • ResponsibleUserId: FK-UserDepartmentMap (User der Verantwortlich dafür ist, dass der Task erledigt wird.)
  • LastReminded: DateTime wird gebraucht um zu speichern wann der User zum letzten mal informiert worden ist.
  • Done: bool ob der Task erledigt wurde.

Neuer Task-Typ implementieren

  1. Neuer TaskType in DB erfassen (neuer Eintrag in TaskType-Tabelle und neues Flag für erfassten Type)
  2. In der Klasse TaskHandler.cs in der Methode CheckAllTasks neue Tasks erfassen und erledigte als done markieren. (Mailing wird automatisch gemacht).

Service Scheduling (Global.asax.cs)

Taskhandler.CheckAllTasks(); check alle Tasks und versendet alle Mails

Das ganze Scheduling funktioniert so, dass ein CacheItem registriert wird, und sobald dieses expired, wird ein neues erstellt und TaksHandler.CheckAllTasks() ausgeführt.

Für mehr Informationen kann dieses Tutorial verwendet werden.