<html><head>
	<link href="css/esrpartstyle.css" rel="stylesheet" type="text/css">
	<script src="../../ClientGlobalContext.js.aspx" type="text/javascript"></script>
	<script src="../../bah_jquery1.4.1.min.js" type="text/javascript"></script>
	<script src="../../bah_SDK.REST.js" type="text/javascript"></script>
	<script>
	    var _esrObj = null;

	    function buildQueryFilter(field, value, and) {
	        if (value == '') {
	            if (and) {
	                return " and " + field + " eq null";
	            } else {
	                return field + " eq null";
	            }
	        }
	        else {
	            if (and) {
	                return " and " + field + " eq '" + value + "'";
	            } else {
	                return field + " eq '" + value + "'";
	            }
	        }

	    }

	    function getParameterByName(name, url) {
	        if (!url) url = window.location.href;
	        name = name.replace(/[\[\]]/g, "\\$&");
	        var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
                results = regex.exec(url);
	        if (!results) return null;
	        if (!results[2]) return '';
	        return decodeURIComponent(results[2].replace(/\+/g, " "));
	    }

	    function doPageLoad() {
	        var esrEndpoint = "";
	        var datavalue = getParameterByName('data');
	        if (datavalue != null) {
	            var params = decodeURIComponent(datavalue).split("&");
	            for (var i in params) {
	                params[i] = params[i].replace(/\+/g, " ").split("=");
	                if (params[i][0] == "esr") {
	                    esrEndpoint = params[i][1];
	                }
	            }
	        }

	        if (esrEndpoint != "") {
	            $.ajax({
	                url: esrEndpoint,
	                dataType: 'json',
	                timeout: 4000,
	                error: function () {
	                    _esrObj = null;
	                    outputData();
	                },
	                success: function (result) {
	                    _esrObj = result;
	                    outputData();
	                }
	            });
	        }
	    }
        
        // get the XMLHttpRequest Service
	    function GetRequestObject() {
	        if (window.XMLHttpRequest) {
	            return new window.XMLHttpRequest;
	        }
	        else {
	            try {
	                return new ActiveXObject("MSXML2.XMLHTTP.3.0");
	            }
	            catch (ex) {
	                return null;
	            }
	        }
	    }

	    // take result of query passed in as param
	    function MakeRequest(query) {
	        var serverUrl = Xrm.Page.context.getClientUrl();
	        var oDataEndpointUrl = serverUrl += "/XRMServices/2011/OrganizationData.svc/";
	        oDataEndpointUrl += query;

	        var service = GetRequestObject();

	        if (service != null) {
	            service.open("GET", oDataEndpointUrl, false);
	            service.setRequestHeader("X-Requested-With", "XMLHttpRequest");
	            service.setRequestHeader("Accept", "application/json, text/javascript, */*");
	            service.send(null);

	            var retrieved = JSON.parse(service.responseText).d;

	            var results = new Array();
	            for (var i = 0; i < retrieved.results.length; i++) {
	                results.push(retrieved.results[i]);
	            }
	            return results;
	        }
	        return null;
	    }

	    function outputData() {
	        //reset display fields
	        $('#DataGrid tbody').empty();

			debugger;
	        //set display fields
	        if (_esrObj != null) {
	            if (!_esrObj.ErrorOccurred) {
	                if ("PersonInfo" in _esrObj.Data) {
	                    if (_esrObj.Data.PersonInfo != null && "VamcData" in _esrObj.Data.PersonInfo) {
	                        if (_esrObj.Data.PersonInfo.VamcData != null && "VamcInfo" in _esrObj.Data.PersonInfo.VamcData) {
	                            if (Array.isArray(_esrObj.Data.PersonInfo.VamcData.VamcInfo)) {
	                                for (var v = 0; v < _esrObj.Data.PersonInfo.VamcData.VamcInfo.length; v++) {
										if (_esrObj.Data.PersonInfo.VamcData.VamcInfo[v].LastVisitDate != null && _esrObj.Data.PersonInfo.VamcData.VamcInfo[v].LastVisitDate != "") {
	                                    // convert last visit date string to date
	                                    var dateparts = _esrObj.Data.PersonInfo.VamcData.VamcInfo[v].LastVisitDate;
	                                    console.log(dateparts);
	                                    dateparts = dateparts.split("-");
	                                    var parsedDate = (new Date(dateparts[0], dateparts[1] - 1, dateparts[2]));
	                                    _esrObj.Data.PersonInfo.VamcData.VamcInfo[v].LastVisitDate = parsedDate;
										}
									}
									
									_esrObj.Data.PersonInfo.VamcData.VamcInfo.sort(function (a, b) {
	                                    return b.LastVisitDate - a.LastVisitDate;});
	                                
	                                for (var i = 0; i < _esrObj.Data.PersonInfo.VamcData.VamcInfo.length; ++i) {
                                        // commenting out dfn as it is no longer needed in the grid
	                                    // var dfnNumber = _esrObj.Data.PersonInfo.VamcData.VamcInfo[i].DfnNumber;
	                                    // updated to add facility name, replacing facility number column with a combination of facility name
	                                    // and facility number
                                        // ex: Bedford, MA (518)
	                                    var facilityNumber = _esrObj.Data.PersonInfo.VamcData.VamcInfo[i].FacilityNumber;
	                                    var lastVisitDate = _esrObj.Data.PersonInfo.VamcData.VamcInfo[i].LastVisitDate;
										var facilityConcat = "";
										var phoneNumber = "";
										
										if(_esrObj.Data.PersonInfo.VamcData.VamcInfo[i].VamcReportDate != null && _esrObj.Data.PersonInfo.VamcData.VamcInfo[i].VamcReportDate != "") {
                                        var reportDate = _esrObj.Data.PersonInfo.VamcData.VamcInfo[i].VamcReportDate.split("-");
                                        var reportDateFormatted = reportDate[1] + "/" + reportDate[2] + "/" + reportDate[0];
										}
										else reportDateFormatted = "";
	                                    
	                                    // retrieve the facility info from CRM
                                        if (facilityNumber != null && facilityNumber != '') {
                                            var facilityInfoQuery = "bah_facilitySet?$select=*&$filter=bah_stationsuffix_text eq '" + facilityNumber + "'";
                                            var facilityInfo = MakeRequest(facilityInfoQuery);
                                            
											// check for length
                                            if (facilityInfo != null && facilityInfo.length > 0) {
                                                for (var p = 0; p < facilityInfo.length; p++) {
													if (facilityInfo[p].bah_name != null && facilityInfo[p].bah_name != "") {
                                                    var facilityName = facilityInfo[p].bah_name;
                                                    console.log(facilityName + " retrieved successfully");
                                                    facilityConcat = facilityName + " (" + facilityNumber + ")";
													}
													else facilityConcat = facilityNumber;
                                                    if (facilityInfo[p].bah_mainphonenumber_text != null) {
                                                        phoneNumber = facilityInfo[p].bah_mainphonenumber_text;
                                                    }
                                                    else phoneNumber = "";
                                                  }
                                              }
											  else {
												// no match found in CRM for facility Number
												facilityConcat = facilityNumber;
												phoneNumber = "";
											  }
                                          }
                                          
										  if (lastVisitDate != null && lastVisitDate != "") {
                                          lastVisitDate = lastVisitDate.format('MM/dd/yyyy');
										  } 
										  else lastVisitDate = "";
                                          $('#DataGrid tr:last').after('<tr><td>' + facilityConcat + '</td><td>' + lastVisitDate + '</td><td>' + phoneNumber + '</td><td>' + reportDateFormatted + '</td></tr>');
                                          
                                      }
	                            }
	                        }
	                    }
	                }
	            }
	        }
	    }

	    $(function () {
	        doPageLoad();

	    });
</script>
<meta charset="utf-8"></head>
<body>
<div class="panel panel-primary" id="DataGridContainer">
    <div class="panel-heading">Visits</div>
    <div class="panel-body">
        <div id="GridTableWrapper">
            <table class="table table-condensed table-striped" id="DataGrid">
                <thead>
                <tr>
                   <!-- <th>DFN Number</th>  -->                  
                    <th>Facility Name</th>
                    <th>Last Visit Date</th>
                    <th>Phone Number</th>
                   <th>Report Date</th>
                </tr>
                </thead>
                <tbody>
                </tbody>
            </table>
        </div>
    </div>
</div>


</body></html>