﻿class AjaxifiedCarModel extends AjaxifiedModel
{
    // Attributes
    private _view: IAjaxifiedCallback;

    // Constructor
    constructor()
    {
        var urls: string[] = [];

        urls[ModelUrlType.Create] = "./AjaxServerSide/ModelCreateCar";
        urls[ModelUrlType.Read] = "./AjaxServerSide/ModelReadCar";
        urls[ModelUrlType.Update] = "./AjaxServerSide/ModelUpdateCar";
        urls[ModelUrlType.Delete] = "./AjaxServerSide/ModelDeleteCar";

        // Specify what the model fields are and their
        // types in an object passed to the parent
        // constructor
        super({
            "id": 0,        // Data fields of model
            "name": "",
            "description": ""
        },
            "id",               // Primary key
            urls);              // URLs for create, read, etc.
    }

    // Properties
    get Name(): string { return this.GetData("name"); }
    set Name(name: string) { this.SetData("name", name); }
    get Description(): number { return this.GetData("description"); }
    set Description(description: number) { this.SetData("description", description); }

    // Methods
    BindToView(view: IAjaxifiedCallback): void
    {
        this._view = view;
    }

    protected OnSuccess(modelStatus: ModelStatus): void
    {
        if (this._view)
        {
            this._view.OnAjaxSuccess(modelStatus);
        }
    }
} 