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"; } }); }]); });