RICADO Gen 4 API JS Client

RICADO Gen 4 API JS Client

source

Models/Packhouse/Site/PackrunGrowerNotificationModel.js

/**
 * File Auto-Generated by the RICADO Gen 4 PHP API Project
 * 
 * Do Not Edit this File Manually!
 */

import BaseModel from '../../../Models/BaseModel';

/**
 * Model Class for a Packrun Grower Notification
 * 
 * @class
 * @hideconstructor
 * @extends BaseModel
 */
class PackrunGrowerNotificationModel extends BaseModel
{
    /**
     * PackrunGrowerNotificationModel Constructor
     * 
     * @protected
     * @param {number} siteId The Site ID associated with this Packrun Grower Notification
     */
    constructor(siteId)
    {
        super();
        
        /**
         * The Packrun Grower Notification ID
         * 
         * @type {string}
         * @public
         */
        this.id = "";
        
        /**
         * The Packing Line ID this Grower Notification is associated with
         * 
         * @type {string}
         * @public
         */
        this.packingLineId = "";
        
        /**
         * The Packrun ID this Grower Notification is associated with
         * 
         * @type {string}
         * @public
         */
        this.packrunId = "";
        
        /**
         * When this Grower Notification was Created
         * 
         * @type {Date}
         * @public
         */
        this.createdTimestamp = new Date();
        
        /**
         * The Grower Notification Type
         * 
         * @type {string}
         * @public
         */
        this.notificationType = "";
        
        /**
         * The SMS Request Statuses indicating progress when sending SMS Messages
         * 
         * @type {Array<{mobileNumber: string, messageId: ?string, messageStatus: ?string, sendRequestCount: number, sendRequestTimestamp: ?Date, sendResponseCode: ?number, sendResponseMessage: ?string, getStatusRequestCount: number, getStatusRequestTimestamp: ?Date, getStatusResponseCode: ?number, getStatusResponseMessage: ?string, completed: boolean}>}
         * @public
         */
        this.smsRequests = [];
        
        /**
         * The Email Request Status indicating progress when sending Emails
         * 
         * @type {?{requestCount: number, requestTimestamp: ?Date, responseCode: ?number, responseMessage: ?string, completed: boolean}}
         * @public
         */
        this.emailRequest = null;
        
        /**
         * Whether the Grower Notification is in the process of being Sent
         * 
         * @type {string}
         * @public
         */
        this.status = "";
        
        /**
         * An Array of SMS Contacts for this Grower Notification
         * 
         * @type {Array<{mobileNumber: string, firstName: string, lastName: ?string}>}
         * @public
         */
        this.smsContacts = [];
        
        /**
         * An Array of Email Contacts for this Grower Notification
         * 
         * @type {Array<{email: string, firstName: string, lastName: ?string}>}
         * @public
         */
        this.emailContacts = [];
        
        /**
         * Whether the Packrun Grower Notification has been deleted
         * 
         * @type {boolean}
         * @public
         */
        this.deleted = false;
        
        /**
         * When the Packrun Grower Notification was last updated
         * 
         * @type {Date}
         * @public
         */
        this.updateTimestamp = new Date();
        
        /**
         * The Site ID associated with this Packrun Grower Notification
         * 
         * @type {number}
         * @public
         */
        this.siteId = siteId;
    }

    /**
     * Create a new **PackrunGrowerNotificationModel** from a JSON Object or JSON String
     * 
     * @static
     * @public
     * @param {Object<string, any>|string} json A JSON Object or JSON String
     * @param {number} siteId The Site ID associated with this Packrun Grower Notification
     * @return {PackrunGrowerNotificationModel}
     */
    static fromJSON(json, siteId)
    {
        let model = new PackrunGrowerNotificationModel(siteId);
        
        /**
         * The JSON Object
         * 
         * @type {Object<string, any>}
         */
        let jsonObject = {};
        
        if(typeof json === 'string')
        {
            jsonObject = JSON.parse(json);
        }
        else if(typeof json === 'object')
        {
            jsonObject = json;
        }
        
        if('id' in jsonObject)
        {
            model.id = (function(){
                if(typeof jsonObject['id'] !== 'string')
                {
                    return String(jsonObject['id']);
                }
        
                return jsonObject['id'];
            }());
        }
        
        if('packingLineId' in jsonObject)
        {
            model.packingLineId = (function(){
                if(typeof jsonObject['packingLineId'] !== 'string')
                {
                    return String(jsonObject['packingLineId']);
                }
        
                return jsonObject['packingLineId'];
            }());
        }
        
        if('packrunId' in jsonObject)
        {
            model.packrunId = (function(){
                if(typeof jsonObject['packrunId'] !== 'string')
                {
                    return String(jsonObject['packrunId']);
                }
        
                return jsonObject['packrunId'];
            }());
        }
        
        if('createdTimestamp' in jsonObject)
        {
            model.createdTimestamp = (function(){
                if(typeof jsonObject['createdTimestamp'] !== 'string')
                {
                    return new Date(String(jsonObject['createdTimestamp']));
                }
        
                return new Date(jsonObject['createdTimestamp']);
            }());
        }
        
        if('notificationType' in jsonObject)
        {
            model.notificationType = (function(){
                if(typeof jsonObject['notificationType'] !== 'string')
                {
                    return String(jsonObject['notificationType']);
                }
        
                return jsonObject['notificationType'];
            }());
        }
        
        if('smsRequests' in jsonObject)
        {
            model.smsRequests = (function(){
                if(Array.isArray(jsonObject['smsRequests']) !== true)
                {
                    return [];
                }
        
                return jsonObject['smsRequests'].map((smsRequestsItem) => {
                    return (function(){
                        let smsRequestsItemObject = {};
                        
                        if(typeof smsRequestsItem === 'object' && 'mobileNumber' in smsRequestsItem)
                        {
                            smsRequestsItemObject.mobileNumber = (function(){
                                if(typeof smsRequestsItem.mobileNumber !== 'string')
                                {
                                    return String(smsRequestsItem.mobileNumber);
                                }
        
                                return smsRequestsItem.mobileNumber;
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.mobileNumber = "";
                        }
                        
                        if(typeof smsRequestsItem === 'object' && 'messageId' in smsRequestsItem)
                        {
                            smsRequestsItemObject.messageId = (function(){
                                if(smsRequestsItem.messageId === null)
                                {
                                    return null;
                                }
        
                                if(typeof smsRequestsItem.messageId !== 'string')
                                {
                                    return String(smsRequestsItem.messageId);
                                }
        
                                return smsRequestsItem.messageId;
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.messageId = null;
                        }
                        
                        if(typeof smsRequestsItem === 'object' && 'messageStatus' in smsRequestsItem)
                        {
                            smsRequestsItemObject.messageStatus = (function(){
                                if(smsRequestsItem.messageStatus === null)
                                {
                                    return null;
                                }
        
                                if(typeof smsRequestsItem.messageStatus !== 'string')
                                {
                                    return String(smsRequestsItem.messageStatus);
                                }
        
                                return smsRequestsItem.messageStatus;
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.messageStatus = null;
                        }
                        
                        if(typeof smsRequestsItem === 'object' && 'sendRequestCount' in smsRequestsItem)
                        {
                            smsRequestsItemObject.sendRequestCount = (function(){
                                if(typeof smsRequestsItem.sendRequestCount !== 'number')
                                {
                                    return Number.isInteger(Number(smsRequestsItem.sendRequestCount)) ? Number(smsRequestsItem.sendRequestCount) : Math.floor(Number(smsRequestsItem.sendRequestCount));
                                }
        
                                return Number.isInteger(smsRequestsItem.sendRequestCount) ? smsRequestsItem.sendRequestCount : Math.floor(smsRequestsItem.sendRequestCount);
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.sendRequestCount = 0;
                        }
                        
                        if(typeof smsRequestsItem === 'object' && 'sendRequestTimestamp' in smsRequestsItem)
                        {
                            smsRequestsItemObject.sendRequestTimestamp = (function(){
                                if(smsRequestsItem.sendRequestTimestamp === null)
                                {
                                    return null;
                                }
        
                                if(typeof smsRequestsItem.sendRequestTimestamp !== 'string')
                                {
                                    return new Date(String(smsRequestsItem.sendRequestTimestamp));
                                }
        
                                return new Date(smsRequestsItem.sendRequestTimestamp);
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.sendRequestTimestamp = null;
                        }
                        
                        if(typeof smsRequestsItem === 'object' && 'sendResponseCode' in smsRequestsItem)
                        {
                            smsRequestsItemObject.sendResponseCode = (function(){
                                if(smsRequestsItem.sendResponseCode === null)
                                {
                                    return null;
                                }
        
                                if(typeof smsRequestsItem.sendResponseCode !== 'number')
                                {
                                    return Number.isInteger(Number(smsRequestsItem.sendResponseCode)) ? Number(smsRequestsItem.sendResponseCode) : Math.floor(Number(smsRequestsItem.sendResponseCode));
                                }
        
                                return Number.isInteger(smsRequestsItem.sendResponseCode) ? smsRequestsItem.sendResponseCode : Math.floor(smsRequestsItem.sendResponseCode);
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.sendResponseCode = null;
                        }
                        
                        if(typeof smsRequestsItem === 'object' && 'sendResponseMessage' in smsRequestsItem)
                        {
                            smsRequestsItemObject.sendResponseMessage = (function(){
                                if(smsRequestsItem.sendResponseMessage === null)
                                {
                                    return null;
                                }
        
                                if(typeof smsRequestsItem.sendResponseMessage !== 'string')
                                {
                                    return String(smsRequestsItem.sendResponseMessage);
                                }
        
                                return smsRequestsItem.sendResponseMessage;
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.sendResponseMessage = null;
                        }
                        
                        if(typeof smsRequestsItem === 'object' && 'getStatusRequestCount' in smsRequestsItem)
                        {
                            smsRequestsItemObject.getStatusRequestCount = (function(){
                                if(typeof smsRequestsItem.getStatusRequestCount !== 'number')
                                {
                                    return Number.isInteger(Number(smsRequestsItem.getStatusRequestCount)) ? Number(smsRequestsItem.getStatusRequestCount) : Math.floor(Number(smsRequestsItem.getStatusRequestCount));
                                }
        
                                return Number.isInteger(smsRequestsItem.getStatusRequestCount) ? smsRequestsItem.getStatusRequestCount : Math.floor(smsRequestsItem.getStatusRequestCount);
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.getStatusRequestCount = 0;
                        }
                        
                        if(typeof smsRequestsItem === 'object' && 'getStatusRequestTimestamp' in smsRequestsItem)
                        {
                            smsRequestsItemObject.getStatusRequestTimestamp = (function(){
                                if(smsRequestsItem.getStatusRequestTimestamp === null)
                                {
                                    return null;
                                }
        
                                if(typeof smsRequestsItem.getStatusRequestTimestamp !== 'string')
                                {
                                    return new Date(String(smsRequestsItem.getStatusRequestTimestamp));
                                }
        
                                return new Date(smsRequestsItem.getStatusRequestTimestamp);
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.getStatusRequestTimestamp = null;
                        }
                        
                        if(typeof smsRequestsItem === 'object' && 'getStatusResponseCode' in smsRequestsItem)
                        {
                            smsRequestsItemObject.getStatusResponseCode = (function(){
                                if(smsRequestsItem.getStatusResponseCode === null)
                                {
                                    return null;
                                }
        
                                if(typeof smsRequestsItem.getStatusResponseCode !== 'number')
                                {
                                    return Number.isInteger(Number(smsRequestsItem.getStatusResponseCode)) ? Number(smsRequestsItem.getStatusResponseCode) : Math.floor(Number(smsRequestsItem.getStatusResponseCode));
                                }
        
                                return Number.isInteger(smsRequestsItem.getStatusResponseCode) ? smsRequestsItem.getStatusResponseCode : Math.floor(smsRequestsItem.getStatusResponseCode);
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.getStatusResponseCode = null;
                        }
                        
                        if(typeof smsRequestsItem === 'object' && 'getStatusResponseMessage' in smsRequestsItem)
                        {
                            smsRequestsItemObject.getStatusResponseMessage = (function(){
                                if(smsRequestsItem.getStatusResponseMessage === null)
                                {
                                    return null;
                                }
        
                                if(typeof smsRequestsItem.getStatusResponseMessage !== 'string')
                                {
                                    return String(smsRequestsItem.getStatusResponseMessage);
                                }
        
                                return smsRequestsItem.getStatusResponseMessage;
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.getStatusResponseMessage = null;
                        }
                        
                        if(typeof smsRequestsItem === 'object' && 'completed' in smsRequestsItem)
                        {
                            smsRequestsItemObject.completed = (function(){
                                if(typeof smsRequestsItem.completed !== 'boolean')
                                {
                                    return Boolean(smsRequestsItem.completed);
                                }
        
                                return smsRequestsItem.completed;
                            }());
                        }
                        else
                        {
                            smsRequestsItemObject.completed = false;
                        }
        
                        return smsRequestsItemObject;
                    }());
                });
            }());
        }
        
        if('emailRequest' in jsonObject)
        {
            model.emailRequest = (function(){
                if(jsonObject['emailRequest'] === null)
                {
                    return null;
                }
        
                let emailRequestObject = {};
                
                if(typeof jsonObject['emailRequest'] === 'object' && 'requestCount' in jsonObject['emailRequest'])
                {
                    emailRequestObject.requestCount = (function(){
                        if(typeof jsonObject['emailRequest'].requestCount !== 'number')
                        {
                            return Number.isInteger(Number(jsonObject['emailRequest'].requestCount)) ? Number(jsonObject['emailRequest'].requestCount) : Math.floor(Number(jsonObject['emailRequest'].requestCount));
                        }
        
                        return Number.isInteger(jsonObject['emailRequest'].requestCount) ? jsonObject['emailRequest'].requestCount : Math.floor(jsonObject['emailRequest'].requestCount);
                    }());
                }
                else
                {
                    emailRequestObject.requestCount = 0;
                }
                
                if(typeof jsonObject['emailRequest'] === 'object' && 'requestTimestamp' in jsonObject['emailRequest'])
                {
                    emailRequestObject.requestTimestamp = (function(){
                        if(jsonObject['emailRequest'].requestTimestamp === null)
                        {
                            return null;
                        }
        
                        if(typeof jsonObject['emailRequest'].requestTimestamp !== 'string')
                        {
                            return new Date(String(jsonObject['emailRequest'].requestTimestamp));
                        }
        
                        return new Date(jsonObject['emailRequest'].requestTimestamp);
                    }());
                }
                else
                {
                    emailRequestObject.requestTimestamp = null;
                }
                
                if(typeof jsonObject['emailRequest'] === 'object' && 'responseCode' in jsonObject['emailRequest'])
                {
                    emailRequestObject.responseCode = (function(){
                        if(jsonObject['emailRequest'].responseCode === null)
                        {
                            return null;
                        }
        
                        if(typeof jsonObject['emailRequest'].responseCode !== 'number')
                        {
                            return Number.isInteger(Number(jsonObject['emailRequest'].responseCode)) ? Number(jsonObject['emailRequest'].responseCode) : Math.floor(Number(jsonObject['emailRequest'].responseCode));
                        }
        
                        return Number.isInteger(jsonObject['emailRequest'].responseCode) ? jsonObject['emailRequest'].responseCode : Math.floor(jsonObject['emailRequest'].responseCode);
                    }());
                }
                else
                {
                    emailRequestObject.responseCode = null;
                }
                
                if(typeof jsonObject['emailRequest'] === 'object' && 'responseMessage' in jsonObject['emailRequest'])
                {
                    emailRequestObject.responseMessage = (function(){
                        if(jsonObject['emailRequest'].responseMessage === null)
                        {
                            return null;
                        }
        
                        if(typeof jsonObject['emailRequest'].responseMessage !== 'string')
                        {
                            return String(jsonObject['emailRequest'].responseMessage);
                        }
        
                        return jsonObject['emailRequest'].responseMessage;
                    }());
                }
                else
                {
                    emailRequestObject.responseMessage = null;
                }
                
                if(typeof jsonObject['emailRequest'] === 'object' && 'completed' in jsonObject['emailRequest'])
                {
                    emailRequestObject.completed = (function(){
                        if(typeof jsonObject['emailRequest'].completed !== 'boolean')
                        {
                            return Boolean(jsonObject['emailRequest'].completed);
                        }
        
                        return jsonObject['emailRequest'].completed;
                    }());
                }
                else
                {
                    emailRequestObject.completed = false;
                }
        
                return emailRequestObject;
            }());
        }
        
        if('status' in jsonObject)
        {
            model.status = (function(){
                if(typeof jsonObject['status'] !== 'string')
                {
                    return String(jsonObject['status']);
                }
        
                return jsonObject['status'];
            }());
        }
        
        if('smsContacts' in jsonObject)
        {
            model.smsContacts = (function(){
                if(Array.isArray(jsonObject['smsContacts']) !== true)
                {
                    return [];
                }
        
                return jsonObject['smsContacts'].map((smsContactsItem) => {
                    return (function(){
                        let smsContactsItemObject = {};
                        
                        if(typeof smsContactsItem === 'object' && 'mobileNumber' in smsContactsItem)
                        {
                            smsContactsItemObject.mobileNumber = (function(){
                                if(typeof smsContactsItem.mobileNumber !== 'string')
                                {
                                    return String(smsContactsItem.mobileNumber);
                                }
        
                                return smsContactsItem.mobileNumber;
                            }());
                        }
                        else
                        {
                            smsContactsItemObject.mobileNumber = "";
                        }
                        
                        if(typeof smsContactsItem === 'object' && 'firstName' in smsContactsItem)
                        {
                            smsContactsItemObject.firstName = (function(){
                                if(typeof smsContactsItem.firstName !== 'string')
                                {
                                    return String(smsContactsItem.firstName);
                                }
        
                                return smsContactsItem.firstName;
                            }());
                        }
                        else
                        {
                            smsContactsItemObject.firstName = "";
                        }
                        
                        if(typeof smsContactsItem === 'object' && 'lastName' in smsContactsItem)
                        {
                            smsContactsItemObject.lastName = (function(){
                                if(smsContactsItem.lastName === null)
                                {
                                    return null;
                                }
        
                                if(typeof smsContactsItem.lastName !== 'string')
                                {
                                    return String(smsContactsItem.lastName);
                                }
        
                                return smsContactsItem.lastName;
                            }());
                        }
                        else
                        {
                            smsContactsItemObject.lastName = null;
                        }
        
                        return smsContactsItemObject;
                    }());
                });
            }());
        }
        
        if('emailContacts' in jsonObject)
        {
            model.emailContacts = (function(){
                if(Array.isArray(jsonObject['emailContacts']) !== true)
                {
                    return [];
                }
        
                return jsonObject['emailContacts'].map((emailContactsItem) => {
                    return (function(){
                        let emailContactsItemObject = {};
                        
                        if(typeof emailContactsItem === 'object' && 'email' in emailContactsItem)
                        {
                            emailContactsItemObject.email = (function(){
                                if(typeof emailContactsItem.email !== 'string')
                                {
                                    return String(emailContactsItem.email);
                                }
        
                                return emailContactsItem.email;
                            }());
                        }
                        else
                        {
                            emailContactsItemObject.email = "";
                        }
                        
                        if(typeof emailContactsItem === 'object' && 'firstName' in emailContactsItem)
                        {
                            emailContactsItemObject.firstName = (function(){
                                if(typeof emailContactsItem.firstName !== 'string')
                                {
                                    return String(emailContactsItem.firstName);
                                }
        
                                return emailContactsItem.firstName;
                            }());
                        }
                        else
                        {
                            emailContactsItemObject.firstName = "";
                        }
                        
                        if(typeof emailContactsItem === 'object' && 'lastName' in emailContactsItem)
                        {
                            emailContactsItemObject.lastName = (function(){
                                if(emailContactsItem.lastName === null)
                                {
                                    return null;
                                }
        
                                if(typeof emailContactsItem.lastName !== 'string')
                                {
                                    return String(emailContactsItem.lastName);
                                }
        
                                return emailContactsItem.lastName;
                            }());
                        }
                        else
                        {
                            emailContactsItemObject.lastName = null;
                        }
        
                        return emailContactsItemObject;
                    }());
                });
            }());
        }
        
        if('deleted' in jsonObject)
        {
            model.deleted = (function(){
                if(typeof jsonObject['deleted'] !== 'boolean')
                {
                    return Boolean(jsonObject['deleted']);
                }
        
                return jsonObject['deleted'];
            }());
        }
        
        if('updateTimestamp' in jsonObject)
        {
            model.updateTimestamp = (function(){
                if(typeof jsonObject['updateTimestamp'] !== 'string')
                {
                    return new Date(String(jsonObject['updateTimestamp']));
                }
        
                return new Date(jsonObject['updateTimestamp']);
            }());
        }
        
        return model;
    }
}

export default PackrunGrowerNotificationModel;