#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Disco.Web.Views.Job.JobParts
{
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Web;
    using System.Web.Helpers;
    using System.Web.Mvc;
    using System.Web.Mvc.Ajax;
    using System.Web.Mvc.Html;
    using System.Web.Routing;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.WebPages;
    using Disco;
    using Disco.Models.Repository;
    using Disco.Services;
    using Disco.Services.Authorization;
    using Disco.Services.Web;
    using Disco.Web;
    using Disco.Web.Extensions;
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
    [System.Web.WebPages.PageVirtualPathAttribute("~/Views/Job/JobParts/Components.cshtml")]
    public partial class Components : Disco.Services.Web.WebViewPage<Disco.Web.Models.Job.ShowModel>
    {
        public Components()
        {
        }
        public override void Execute()
        {
            
            #line 2 "..\..\Views\Job\JobParts\Components.cshtml"
  
    Authorization.Require(Claims.Job.ShowNonWarrantyComponents);

    var hasEdit = Authorization.Has(Claims.Job.Properties.NonWarrantyProperties.EditComponents);
    var hasAdd = Authorization.Has(Claims.Job.Properties.NonWarrantyProperties.AddComponents);

    if (hasEdit)
    {
        Html.BundleDeferred("~/ClientScripts/Modules/jQuery-NumberFormatter");
    }

            
            #line default
            #line hidden
WriteLiteral("\r\n<table");

WriteLiteral(" id=\"jobComponents\"");

WriteLiteral(">\r\n    <tr>\r\n        <th>Description\r\n        </th>\r\n        <th>Cost\r\n        </" +
"th>\r\n");

            
            #line 19 "..\..\Views\Job\JobParts\Components.cshtml"
        
            
            #line default
            #line hidden
            
            #line 19 "..\..\Views\Job\JobParts\Components.cshtml"
         if (hasEdit)
        {

            
            #line default
            #line hidden
WriteLiteral("            <th");

WriteLiteral(" class=\"actions\"");

WriteLiteral(">&nbsp;\r\n            </th>\r\n");

            
            #line 23 "..\..\Views\Job\JobParts\Components.cshtml"
        }

            
            #line default
            #line hidden
WriteLiteral("    </tr>\r\n");

            
            #line 25 "..\..\Views\Job\JobParts\Components.cshtml"
    
            
            #line default
            #line hidden
            
            #line 25 "..\..\Views\Job\JobParts\Components.cshtml"
     if (hasEdit)
    {
        foreach (var jc in Model.Job.JobComponents)
        {

            
            #line default
            #line hidden
WriteLiteral("        <tr");

WriteLiteral(" data-jobcomponentid=\"");

            
            #line 29 "..\..\Views\Job\JobParts\Components.cshtml"
                            Write(jc.Id);

            
            #line default
            #line hidden
WriteLiteral("\"");

WriteLiteral(">\r\n            <td>\r\n                <input");

WriteLiteral(" type=\"text\"");

WriteLiteral(" class=\"description\"");

WriteAttribute("value", Tuple.Create(" value=\"", 853), Tuple.Create("\"", 876)
            
            #line 31 "..\..\Views\Job\JobParts\Components.cshtml"
, Tuple.Create(Tuple.Create("", 861), Tuple.Create<System.Object, System.Int32>(jc.Description
            
            #line default
            #line hidden
, 861), false)
);

WriteLiteral(" />\r\n            </td>\r\n            <td>\r\n                <input");

WriteLiteral(" type=\"text\"");

WriteLiteral(" class=\"cost\"");

WriteAttribute("value", Tuple.Create(" value=\"", 966), Tuple.Create("\"", 996)
            
            #line 34 "..\..\Views\Job\JobParts\Components.cshtml"
, Tuple.Create(Tuple.Create("", 974), Tuple.Create<System.Object, System.Int32>(jc.Cost.ToString("C")
            
            #line default
            #line hidden
, 974), false)
);

WriteLiteral(" />\r\n            </td>\r\n            <td>\r\n                <span");

WriteLiteral(" class=\"remove fa fa-times-circle\"");

WriteLiteral("></span>\r\n            </td>\r\n        </tr>\r\n");

            
            #line 40 "..\..\Views\Job\JobParts\Components.cshtml"
        }
    }
    else
    {
        foreach (var jc in Model.Job.JobComponents)
        {

            
            #line default
            #line hidden
WriteLiteral("        <tr");

WriteLiteral(" data-jobcomponentid=\"");

            
            #line 46 "..\..\Views\Job\JobParts\Components.cshtml"
                            Write(jc.Id);

            
            #line default
            #line hidden
WriteLiteral("\"");

WriteLiteral(">\r\n            <td>\r\n                <span");

WriteLiteral(" class=\"description\"");

WriteLiteral(">");

            
            #line 48 "..\..\Views\Job\JobParts\Components.cshtml"
                                     Write(jc.Description);

            
            #line default
            #line hidden
WriteLiteral("</span>\r\n            </td>\r\n            <td>\r\n                <span");

WriteLiteral(" class=\"cost\"");

WriteLiteral(">");

            
            #line 51 "..\..\Views\Job\JobParts\Components.cshtml"
                              Write(jc.Cost.ToString("C"));

            
            #line default
            #line hidden
WriteLiteral("</span>\r\n            </td>\r\n        </tr>\r\n");

            
            #line 54 "..\..\Views\Job\JobParts\Components.cshtml"
        }
    }

            
            #line default
            #line hidden
WriteLiteral("\r\n    <tr>\r\n        <td>\r\n");

            
            #line 59 "..\..\Views\Job\JobParts\Components.cshtml"
            
            
            #line default
            #line hidden
            
            #line 59 "..\..\Views\Job\JobParts\Components.cshtml"
             if (hasEdit && hasAdd)
            {

            
            #line default
            #line hidden
WriteLiteral("                <a");

WriteLiteral(" href=\"#\"");

WriteLiteral(" id=\"jobComponentsAdd\"");

WriteLiteral(">Add Component</a>\r\n");

            
            #line 62 "..\..\Views\Job\JobParts\Components.cshtml"
            }

            
            #line default
            #line hidden
WriteLiteral("            &nbsp;\r\n        </td>\r\n        <td");

WriteAttribute("colspan", Tuple.Create(" colspan=\"", 1727), Tuple.Create("\"", 1755)
            
            #line 65 "..\..\Views\Job\JobParts\Components.cshtml"
, Tuple.Create(Tuple.Create("", 1737), Tuple.Create<System.Object, System.Int32>(hasEdit ? 2 : 1
            
            #line default
            #line hidden
, 1737), false)
);

WriteLiteral(" class=\"totalCost\"");

WriteLiteral(">Total: <span");

WriteLiteral(" id=\"jobComponentsTotalCost\"");

WriteLiteral(">\r\n");

            
            #line 66 "..\..\Views\Job\JobParts\Components.cshtml"
            
            
            #line default
            #line hidden
            
            #line 66 "..\..\Views\Job\JobParts\Components.cshtml"
             if (!hasEdit)
            {
                
            
            #line default
            #line hidden
            
            #line 68 "..\..\Views\Job\JobParts\Components.cshtml"
           Write(Model.Job.JobComponentsTotalCost().ToString("C"));

            
            #line default
            #line hidden
            
            #line 68 "..\..\Views\Job\JobParts\Components.cshtml"
                                                                 
            }

            
            #line default
            #line hidden
WriteLiteral("        </span>\r\n        </td>\r\n    </tr>\r\n</table>\r\n");

            
            #line 74 "..\..\Views\Job\JobParts\Components.cshtml"
 if (hasEdit)
{

            
            #line default
            #line hidden
WriteLiteral("    <div");

WriteLiteral(" id=\"dialogRemoveComponent\"");

WriteLiteral(" title=\"Remove this Component?\"");

WriteLiteral(">\r\n        <p>\r\n            <i");

WriteLiteral(" class=\"fa fa-exclamation-triangle fa-lg\"");

WriteLiteral("></i>&nbsp;Are you sure?\r\n        </p>\r\n    </div>\r\n");

WriteLiteral("    <script");

WriteLiteral(" type=\"text/javascript\"");

WriteLiteral(">\r\n        $(function () {\r\n            var $jobComponents = $(\'#jobComponents\');" +
"\r\n\r\n            $jobComponents.on(\'change\', \'input\', updateComponent);\r\n        " +
"    $jobComponents.on(\'focus\', \'input\', function () { $(this).select() });\r\n\r\n\r\n" +
"            $jobComponents.on(\'click\', \'span.remove\', removeComponent);\r\n\r\n     " +
"       $(\'#jobComponentsAdd\').click(function () {\r\n                var jc = $(\'<" +
"tr><td><input type=\"text\" class=\"description\" /></td><td><input type=\"text\" clas" +
"s=\"cost\" /></td><td><span class=\"remove fa fa-times-circle\"></span></td></tr>\');" +
"\r\n                jc.find(\'input\').focus(function () { $(this).select() })\r\n    " +
"            jc.insertBefore($jobComponents.find(\'tr\').last());\r\n                " +
"jc.find(\'input.description\').focus();\r\n                return false;\r\n          " +
"  });\r\n\r\n            $(\'#dialogRemoveComponent\').dialog({\r\n                resiz" +
"able: false,\r\n                height: 140,\r\n                modal: true,\r\n      " +
"          autoOpen: false\r\n            });\r\n\r\n            function removeCompone" +
"nt() {\r\n                var componentRow = $(this).closest(\'tr\');\r\n             " +
"   var id = componentRow.attr(\'data-jobcomponentid\');\r\n                if (id) {" +
"\r\n                    var data = { id: id };\r\n\r\n                    var $dialogR" +
"emoveComponent = $(\'#dialogRemoveComponent\');\r\n                    $dialogRemove" +
"Component.dialog(\"enable\");\r\n                    $dialogRemoveComponent.dialog(\'" +
"option\', \'buttons\', {\r\n                        \"Remove\": function () {\r\n        " +
"                    $dialogRemoveComponent.dialog(\"disable\");\r\n                 " +
"           $dialogRemoveComponent.dialog(\"option\", \"buttons\", null);\r\n          " +
"                  $.ajax({\r\n                                url: \'");

            
            #line 119 "..\..\Views\Job\JobParts\Components.cshtml"
                                 Write(Url.Action(MVC.API.Job.ComponentRemove()));

            
            #line default
            #line hidden
WriteLiteral("\',\r\n                                dataType: \'json\',\r\n                          " +
"      data: data,\r\n                                success: function (d) {\r\n    " +
"                                if (d == \'OK\') {\r\n                              " +
"          componentRow.remove();\r\n                                        update" +
"TotalCost();\r\n                                    } else {\r\n                    " +
"                    alert(\'Unable to remove component: \' + d);\r\n                " +
"                    }\r\n                                    $dialogRemoveComponen" +
"t.dialog(\"close\");\r\n                                },\r\n                        " +
"        error: function (jqXHR, textStatus, errorThrown) {\r\n                    " +
"                alert(\'Unable to remove component: \' + textStatus);\r\n           " +
"                         $dialogRemoveComponent.dialog(\"close\");\r\n              " +
"                  }\r\n                            });\r\n                        }," +
"\r\n                        Cancel: function () {\r\n                            $di" +
"alogRemoveComponent.dialog(\"close\");\r\n                        }\r\n               " +
"     });\r\n\r\n                    $dialogRemoveComponent.dialog(\'open\');\r\n\r\n      " +
"          } else {\r\n                    // New - Remove\r\n                    com" +
"ponentRow.remove();\r\n                    updateTotalCost();\r\n                }\r\n" +
"            }\r\n            function updateTotalCost() {\r\n                var tot" +
"alCost = 0;\r\n\r\n                $jobComponents.find(\'input.cost\').each(function (" +
") {\r\n                    var v = $(this).val();\r\n                    v = $.parse" +
"Number(v, { format: \'#,##0.00\', locale: \'au\' });\r\n                    if (!isNaN" +
"(v))\r\n                        totalCost += v;\r\n                });\r\n            " +
"    var totalCostFormatted = $.formatNumber(totalCost, { format: \'#,##0.00\', loc" +
"ale: \'au\' });\r\n                $(\'#jobComponentsTotalCost\').text(\'$\' + totalCost" +
"Formatted);\r\n            }\r\n            function updateComponent() {\r\n          " +
"      var componentRow = $(this).closest(\'tr\');\r\n\r\n                componentRow." +
"find(\'input\').attr(\'disabled\', true).addClass(\'updating\');\r\n\r\n                va" +
"r id = componentRow.attr(\'data-jobcomponentid\');\r\n                if (id) {\r\n   " +
"                 // Update\r\n                    var data = {\r\n                  " +
"      id: id,\r\n                        Description: componentRow.find(\'input.des" +
"cription\').val(),\r\n                        Cost: componentRow.find(\'input.cost\')" +
".val()\r\n                    };\r\n                    $.ajax({\r\n                  " +
"      url: \'");

            
            #line 176 "..\..\Views\Job\JobParts\Components.cshtml"
                         Write(Url.Action(MVC.API.Job.ComponentUpdate()));

            
            #line default
            #line hidden
WriteLiteral(@"',
                        dataType: 'json',
                        data: data,
                        success: function (d) {
                            componentRow.find('input').attr('disabled', false).removeClass('updating');
                            if (d.Result == 'OK') {
                                componentRow.find('input.description').val(d.Component.Description);
                                componentRow.find('input.cost').val(d.Component.Cost);
                            } else {
                                alert('Unable to update component: ' + d.Result);
                            }
                        },
                        error: function (jqXHR, textStatus, errorThrown) {
                            alert('Unable to update component: ' + textStatus);
                        }
                    });
                } else {
                    // Add
                    var data = {
                        id: id,
                        Description: componentRow.find('input.description').val(),
                        Cost: componentRow.find('input.cost').val()
                    };
                    $.ajax({
                        url: '");

            
            #line 200 "..\..\Views\Job\JobParts\Components.cshtml"
                         Write(Url.Action(MVC.API.Job.ComponentAdd(Model.Job.Id, null, null)));

            
            #line default
            #line hidden
WriteLiteral(@"',
                        dataType: 'json',
                        data: data,
                        success: function (d) {
                            componentRow.find('input').attr('disabled', false).removeClass('updating');
                            if (d.Result == 'OK') {
                                componentRow.attr('data-jobcomponentid', d.Component.Id);
                                componentRow.find('input.description').val(d.Component.Description);
                                componentRow.find('input.cost').val(d.Component.Cost);
                            } else {
                                alert('Unable to add component: ' + d.Result);
                            }
                        },
                        error: function (jqXHR, textStatus, errorThrown) {
                            alert('Unable to add component: ' + textStatus);
                        }
                    });
                }
                updateTotalCost();
            }
            updateTotalCost();

        });
    </script>
");

            
            #line 224 "..\..\Views\Job\JobParts\Components.cshtml"
}
            
            #line default
            #line hidden
        }
    }
}
#pragma warning restore 1591
