define(['quote/quote'], function (quote) {
quote.controller('Watercraft', ['$scope', '$http', 'VehicleHelpers', function ($scope, $http, VehicleHelpers) {
$scope.SetStepHeader('
Watercraft information
');
//vehicleobject actions
//when the currently selected Vehicle changes
$scope.changeIndex = function (vehicle) {
var index = VehicleHelpers.getVehicleIndex(vehicle);
$scope.index = index;
$scope.listIndex = VehicleHelpers.getLastVehicleIndexByType($scope.Vehicles[$scope.index], 'IsWatercraft');
$scope.Vehicles[index].HasSeen = true;
};
//when a Vehicle is removed
$scope.removeItem = function (vehicle) {
var index = VehicleHelpers.getVehicleIndex(vehicle);
VehicleHelpers.removeVehicle($scope, index, 'IsWatercraft');
};
//when a Vehicle is added
$scope.addItem = function addItem() {
VehicleHelpers.addVehicle($scope, {
IsWatercraft: true, VehicleDescription: {}, Sasria: "Y", HailCover: "Y"
}, 'IsWatercraft');
window.scrollTo(0, 0);
};
$scope.Vehicles = $scope.Quote.Vehicles;
eval(document.getElementById("InitScript").innerHTML);
var twentyYears = [], tenYears = [];
for (var y = new Date().getFullYear(), i = 0; i < 20; ++i, --y) twentyYears.push(y) && i < 10 && tenYears.push(y);
$scope.Years = twentyYears;
if ($scope.Vehicles.length == 0 && $scope.Quote.AmendmentMode != "Add") {
$scope.Vehicles[$scope.index].HailCover = "Y";
$scope.Vehicles[$scope.index].Sasria = "Y";
//$scope.Vehicles[$scope.index] = {};
$scope.disablevalue = true;
} else {
$scope.disablevalue = false;
}
function UpdateWatercraftDescription() {
if ($scope.Vehicles[$scope.index].VehicleTypeInternal) {
var hullType = _HyllType.filter(function (v) { return v.Code == $scope.Vehicles[$scope.index].HullType });
var craftType = _WatercraftType.filter(function (v) { return v.Code == $scope.Vehicles[$scope.index].VehicleTypeInternal });
if (hullType.length > 0 && hullType[0].Description.match(/Please Select|Not Applicable/gi)) hullType = "";
if (craftType.length > 0 && craftType[0].Description.match(/Please Select|Not Applicable/gi) || craftType.length == 0) craftType = "Watercraft";
if (hullType.length > 0 && craftType.length > 0) $scope.Vehicles[$scope.index].VehicleDescription.Description = hullType[0].Description + " " + craftType[0].Description;
}
}
$scope.GetKey = function () {
var Watercraft = {};
Watercraft.craftType = $scope.Vehicles[$scope.index].VehicleTypeInternal;
Watercraft.hullType = $scope.Vehicles[$scope.index].HullType;
$http({
method: 'POST',
url: '/Quote/Watercraft/GetCraftKey',
data: Watercraft
}).success(function (data, status, headers, config) {
$scope.Vehicles[$scope.index].VehicleDescription.Id = data.Code
$scope.loadWatercraftMinMax();
}).error(function (data, status, headers, config) { });
}
$scope.loadWatercraftMinMax = function () {
var Watercraft = {};
Watercraft.vehiclekey = $scope.Vehicles[$scope.index].VehicleDescription.Id;
Watercraft.referenceNumber = $scope.Quote.ReferenceNumber;
$http({
method: 'POST',
url: '/Quote/Watercraft/GetCraftMinMax',
data: Watercraft
}).success(function (data, status, headers, config) {
$scope.WatercraftMaximum = data.Maximum;
$scope.WatercraftMinimum = data.Minimum;
}).error(function (data, status, headers, config) { });
}
$scope.$watch("Vehicles[index].VehicleTypeInternal", function (value) {
UpdateWatercraftDescription();
$scope.WatercraftMaximum = "";
$scope.WatercraftMinimum = "";
if (value) {
if (value == 'RD' || value == 'JS') {
$scope.disablevalue = false;
$scope.Vehicles[$scope.index].HullType = "";
$scope.GetKey();
$scope.Years = tenYears;
} else {
$scope.Years = twentyYears;
if (value && $scope.Vehicles[$scope.index].HullType) {
$scope.disablevalue = false;
$scope.GetKey();
} else {
$scope.disablevalue = true;
}
$scope.CheckHullType();
}
if ($scope.disablevalue) $scope.Vehicles[$scope.index].InsuredValue = "";
} else {
$scope.disablevalue = true;
$scope.Vehicles[$scope.index].InsuredValue = "";
}
});
function ensureRegisteredYearValid() {
if ($scope.Vehicles && $scope.Vehicles[$scope.index]) {
var has = false;
var ry = $scope.Vehicles[$scope.index].VehicleDescription.Year;
$scope.Years.forEach(function (y) { has = has || y == ry; });
if (!has) $scope.Vehicles[$scope.index].VehicleDescription.Year = undefined;
}
}
$scope.$watch("Vehicles[index].RegisteredYear", ensureRegisteredYearValid);
$scope.$watch("Vehicles[index].Year", ensureRegisteredYearValid);
$scope.$watch("Vehicles[index].HullType", function (value) {
UpdateWatercraftDescription();
$scope.CheckHullType();
if (value && $scope.Vehicles[$scope.index].VehicleTypeInternal) {
$scope.WatercraftMaximum = "";
$scope.WatercraftMinimum = "";
$scope.disablevalue = false;
$scope.GetKey();
} else if ($scope.Vehicles[$scope.index].VehicleTypeInternal == 'RD' || $scope.Vehicles[$scope.index].VehicleTypeInternal == 'JS') {
$scope.WatercraftMaximum = "";
$scope.WatercraftMinimum = "";
$scope.disablevalue = false;
$scope.GetKey();
}
else { $scope.disablevalue = true; }
if ($scope.disablevalue) $scope.Vehicles[$scope.index].InsuredValue = "";
});
$scope.CheckHullType = function () {
if ($scope.Vehicles[$scope.index].HullType != "")
if ($scope.Vehicles.length > 0) {
if ($scope.Vehicles[$scope.index].HullType == "W") {
$scope.Years = tenYears;
} else {
$scope.Years = twentyYears;
}
}
}
VehicleHelpers.setupState($scope, 'IsWatercraft');
$scope.$watch("Quote.WatercraftClaimsAndLosses.NoClaims", function (v) {
if (v) {
$scope.Quote.WatercraftClaimsAndLosses.LastClaimMonth = null;
$scope.Quote.WatercraftClaimsAndLosses.LastClaimYear = null;
}
});
$scope.$watch("Quote.WatercraftClaimsAndLosses.NoLosses", function (v) {
if (v) {
$scope.Quote.WatercraftClaimsAndLosses.LastLossMonth = null;
$scope.Quote.WatercraftClaimsAndLosses.LastLossYear = null;
}
});
$scope.$watch("Vehicles[index].VehicleFinanced", function (value) {
if (value == "Y") {
$scope.Vehicles[$scope.index].Sasria = "Y";
}
});
}]);
});