/**
******************************************************************************
* Copyright © 2017-2018 PTA GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* 
*     http://www.eclipse.org/legal/epl-v10.html
* 
******************************************************************************
*/
import { Notification } from '../model/notification';

export const DUMMY_UPDATED_NOTIFICATION: Notification = {
    id: 100,
    incidentId: 100,
    version: 2,
    fkRefBranch: 1,
    fkRefGridTerritory: 1,
    fkRefNotificationStatus: 2,
    fkRefNotificationPriority: null,
    beginDate: '2017-01-16T14:01:001',
    modDate: null,
    modUser: 'theo',
    selected: false,
    status: '',
    notificationText: 'Achtung: Diebstahlgefahr',
    freeText: '',
    freeTextExtended: '',
    responsibilityForwarding: '',
    responsibilityControlPoint: 'Abteilung 4',
    reminderDate: null,
    futureDate: null,
    createDate: '2017-01-15T11:11:00+01',
    expectedFinishDate: '2017-01-17T04:04:00+01',
    finishedDate: null,
    createUser: 'Abteilungsleitung',
    clerk: 'Mustermann',
    adminFlag: false,
    type: null,
    isTypePresenceCheck: Notification.prototype.isTypePresenceCheck
};

export const SEARCH_RESULT_NOTIFICATIONS: Notification[] = [
    {
        id: 3,
        incidentId: 3,
        version: 3,
        fkRefBranch: 1,
        fkRefGridTerritory: 1,
        fkRefNotificationStatus: 2,
        fkRefNotificationPriority: null,
        beginDate: '2017-01-16T14:01:001',
        modDate: null,
        modUser: 'theo',
        selected: false,
        status: 'offen',
        notificationText: 'Fehler Bereich D',
        freeText: '',
        freeTextExtended: '',
        responsibilityForwarding: '',
        responsibilityControlPoint: 'Abteilung 4',
        reminderDate: null,
        futureDate: null,
        createDate: '2017-01-14T21:21:00',
        expectedFinishDate: '2017-01-15T21:21:00',
        finishedDate: null,
        createUser: 'Bearbeiter 3',
        clerk: 'Musterkind',
        adminFlag: false,
        type: null,
        isTypePresenceCheck: Notification.prototype.isTypePresenceCheck
    },
    {
        id: 4,
        incidentId: 6,
        version: 2,
        fkRefBranch: 1,
        fkRefGridTerritory: 2,
        fkRefNotificationStatus: 2,
        fkRefNotificationPriority: null,
        beginDate: '2017-01-16T14:01:001',
        modDate: null,
        modUser: 'theobald',
        selected: false,
        status: 'offen',
        notificationText: 'Austausch Gerät XYZ',
        freeText: '',
        freeTextExtended: '',
        responsibilityForwarding: '',
        responsibilityControlPoint: 'Fachbereich K',
        reminderDate: null,
        futureDate: null,
        createDate: '2017-01-15T23:23:17+01',
        expectedFinishDate: '2017-01-16T23:23:13',
        finishedDate: null,
        createUser: 'Bearbeiter 4',
        clerk: 'Musterenkel',
        adminFlag: false,
        type: null,
        isTypePresenceCheck: Notification.prototype.isTypePresenceCheck
    },
    {
        id: 5,
        incidentId: 55,
        version: 6,
        fkRefBranch: 1,
        fkRefGridTerritory: 2,
        fkRefNotificationStatus: 2,
        fkRefNotificationPriority: null,
        beginDate: '2017-01-16T14:01:001',
        modDate: null,
        modUser: 'theo-Bold',
        selected: false,
        status: 'offen',
        notificationText: 'Störung: Durchflussgeschwindigkeit',
        freeText: '',
        freeTextExtended: '',
        responsibilityForwarding: '',
        responsibilityControlPoint: 'Firma OPQ',
        reminderDate: null,
        futureDate: null,
        createDate: '2017-01-16T22:42:17',
        expectedFinishDate: '2017-01-17T22:42:17',
        finishedDate: null,
        createUser: 'Bearbeiter 5',
        clerk: 'Imaginär',
        adminFlag: false,
        type: null,
        isTypePresenceCheck: Notification.prototype.isTypePresenceCheck
    }
];

export const SEARCH_RESULT_NOTIFICATIONS2: Notification[] = [
    {
        id: 3,
        incidentId: 3,
        version: 3,
        fkRefBranch: 1,
        fkRefGridTerritory: 1,
        fkRefNotificationStatus: 2,
        fkRefNotificationPriority: null,
        beginDate: '2017-01-16T14:01:001',
        modDate: null,
        modUser: 'theo',            
        selected: false,
        status: 'offen',
        notificationText: 'Test Fehler Bereich D',
        freeText: '',
        freeTextExtended: '',
        responsibilityForwarding: '',
        responsibilityControlPoint: 'Abteilung 4',
        reminderDate: null,
        futureDate: null,
        createDate: '2017-01-14T21:21:00',
        expectedFinishDate: '2017-01-15T21:21:00',
        finishedDate: null,
        createUser: 'Bearbeiter 3',
        clerk: 'Musterkind',
        adminFlag: false,
        type: null,
        isTypePresenceCheck: Notification.prototype.isTypePresenceCheck
    },
    {
        id: 4,
        incidentId: 6,
        version: 2,
        fkRefBranch: 2,
        fkRefGridTerritory: 2,
        fkRefNotificationStatus: 2,
        fkRefNotificationPriority: null,
        beginDate: '2017-01-16T14:01:001',
        modDate: null,
        modUser: 'theobald',            
        selected: false,
        status: 'offen',
        notificationText: 'Austausch Test Gerät XYZ',
        freeText: '',
        freeTextExtended: '',
        responsibilityForwarding: '',
        responsibilityControlPoint: 'Fachbereich K',
        reminderDate: null,
        futureDate: null,
        createDate: '2017-01-15T23:23:17+01',
        expectedFinishDate: '2017-01-16T23:23:13',
        finishedDate: null,
        createUser: 'Bearbeiter 4',
        clerk: 'Musterenkel',
        adminFlag: false,
        type: null,
        isTypePresenceCheck: Notification.prototype.isTypePresenceCheck
    },
    {
        id: 5,
        incidentId: 55,
        version: 6,
        fkRefBranch: 3,
        fkRefGridTerritory: 2,
        fkRefNotificationStatus: 2,
        fkRefNotificationPriority: null,
        beginDate: '2017-01-16T14:01:001',
        modDate: null,
        modUser: 'theo-Bold',            
        selected: false,
        status: 'offen',
        notificationText: 'Störung: Test Durchflussgeschwindigkeit',
        freeText: '',
        freeTextExtended: '',
        responsibilityForwarding: '',
        responsibilityControlPoint: 'Firma OPQ',
        reminderDate: null,
        futureDate: null,
        createDate: '2017-01-16T22:42:17',
        expectedFinishDate: '2017-01-17T22:42:17',
        finishedDate: null,
        createUser: 'Bearbeiter 5',
        clerk: 'Imaginär',
        adminFlag: false,
        type: null,
        isTypePresenceCheck: Notification.prototype.isTypePresenceCheck
    },
    {
        id: 6,
        incidentId: 6,
        version: 1,
        fkRefBranch: 4,
        fkRefGridTerritory: 1,
        fkRefNotificationStatus: 2,
        fkRefNotificationPriority: null,
        beginDate: '2017-01-16T14:01:001',
        modDate: null,
        modUser: 'theofrank',            
        selected: false,
        status: 'geschlossen',
        notificationText: 'Störung: Test Geisterspannung',
        freeText: '',
        freeTextExtended: '',
        responsibilityForwarding: '',
        responsibilityControlPoint: 'Lieferant T',
        reminderDate: null,
        futureDate: null,
        createDate: '2017-01-17T15:01:00',
        expectedFinishDate: '2017-01-18T15:01:001',
        finishedDate: null,
        createUser: 'Bearbeiter 6',
        clerk: 'Geist',
        adminFlag: false,
        type: null,
        isTypePresenceCheck: Notification.prototype.isTypePresenceCheck
    }
];