public ActionResult AccountManagerPicture(string databaseName, string customerId, string companyId)
        {
            APIAuth  auth     = new APIAuth(Request, Response);
            AuthInfo authInfo = auth.CheckLogin();

            if (authInfo.IsAuthenticated)
            {
                Customer localCust = new Customer();
                localCust.DatabaseName = databaseName;
                localCust.CustomerId   = customerId;
                localCust.CompanyId    = companyId;

                //Check if this user has access to this customer
                var userCustomers = db.GetUserCustomersSync(authInfo.User.Id);

                if (userCustomers.Count(x => x.CustomerKey == localCust.CustomerKey) > 0)
                {
                    // Get the customer's account manager's details
                    AccountManager accountManager = new OverviewDAL().GetAccountManagerDetailsSync(localCust).FirstOrDefault();

                    // Get the URL for the account manager's image
                    string accountManagerImageURL = DownloadsHelper.GetAccountManagerImageURL(accountManager.Email);

                    // Download the account manager image
                    WebClient webClient = new WebClient();
                    byte[]    accountManagerImageBytes = webClient.DownloadData(accountManagerImageURL);

                    // Return the account manager image as bytes
                    return(File(accountManagerImageBytes, System.Net.Mime.MediaTypeNames.Image.Jpeg));
                }
                else
                {
                    return(auth.Forbidden());
                }
            }
            else
            {
                return(auth.Forbidden());
            }
        }
        public ActionResult AccountManagerDetails(string databaseName, string customerId, string companyId)
        {
            APIAuth  auth     = new APIAuth(Request, Response);
            AuthInfo authInfo = auth.CheckLogin();

            if (authInfo.IsAuthenticated)
            {
                Customer localCust = new Customer();
                localCust.DatabaseName = databaseName;
                localCust.CustomerId   = customerId;
                localCust.CompanyId    = companyId;

                //Check if this user has access to this customer
                var userCustomers = db.GetUserCustomersSync(authInfo.User.Id);

                if (userCustomers.Count(x => x.CustomerKey == localCust.CustomerKey) > 0)
                {
                    //AccountManager accountManager = db.GetAccountManagerDetails(localCust).GetAwaiter().GetResult();
                    var            accountManagers = db.GetAccountManagerDetailsSync(localCust);
                    AccountManager accountManager  = accountManagers.FirstOrDefault();

                    RentalsDAL dbRental = new RentalsDAL();

                    string depotEmail = dbRental.GetOnRentEmailAddressSync(localCust).FirstOrDefault();;
                    accountManager.OnRentEmailAddress = depotEmail;

                    return(Json(accountManager, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(auth.Forbidden());
                }
            }
            else
            {
                return(auth.Forbidden());
            }
        }
        public ActionResult CustomerDepotEmail(string companyid, string customerid, string databasename)
        {
            APIAuth  auth     = new APIAuth(Request, Response);
            AuthInfo authInfo = auth.CheckLogin();

            if (authInfo.IsAuthenticated)
            {
                var userCustomerDepotEmail = db.GetOnRentEmailAddress(companyid, customerid, databasename);
                return(Content(new JavaScriptSerializer().Serialize(userCustomerDepotEmail.ToList()), "application/json"));
            }
            else
            {
                return(auth.Forbidden());
            }
        }
        public ActionResult Customers()
        {
            APIAuth  auth     = new APIAuth(Request, Response);
            AuthInfo authInfo = auth.CheckLogin();

            if (authInfo.IsAuthenticated)
            {
                var userCustomers = db.GetUserCustomersSync(authInfo.User.Id);
                return(Content(new JavaScriptSerializer().Serialize(userCustomers.ToList()), "application/json"));
            }
            else
            {
                return(auth.Forbidden());
            }
        }
        public ActionResult Orders(DateTime startDate, DateTime endDate, string databaseName, string customerId, string companyId)
        {
            APIAuth  auth     = new APIAuth(Request, Response);
            AuthInfo authInfo = auth.CheckLogin();

            if (authInfo.IsAuthenticated)
            {
                Customer localCust = new Customer();
                localCust.DatabaseName = databaseName;
                localCust.CustomerId   = customerId;
                localCust.CompanyId    = companyId;

                //Check if this user has access to this customer
                var userCustomers = db.GetUserCustomersSync(authInfo.User.Id);

                //Customer selectedCompany = userCustomers.Where(x => x.CustomerKey == localCust.CustomerKey).First();
                //return Json(new { foo = "ok", baz = "alee" });

                //if (selectedCompany != null)
                if (userCustomers.Count(x => x.CustomerKey == localCust.CustomerKey) > 0)
                {
                    IEnumerable <RentalOrder> orders;

                    Customer activeCust = db.GetCustomer(localCust.DatabaseName, localCust.CompanyId, localCust.CustomerId);
                    if (activeCust.showChildBROrders)
                    {
                        var validCustomers = new OverviewDAL().GetCustomersRegisteredSync().Where(x => x.DatabaseName == activeCust.DatabaseName && x.CompanyId == activeCust.CompanyId);
                        orders = db.GetRentalOrdersChildBRSync(activeCust, startDate, endDate);
                        orders = orders.Join(validCustomers, x => x.CustAccount, y => y.CustomerId, (ord, cust) => ord);
                    }
                    else
                    {
                        orders = db.GetRentalOrdersSync(localCust, startDate, endDate);
                    }

                    //need to manually add trackunit data
                    RentalsDAL dbRental = new RentalsDAL();
                    IEnumerable <TrackUnitData> units = dbRental.GetTrackUnitDataSync();

                    using (var orderEnum = orders.GetEnumerator())
                    {
                        while (orderEnum.MoveNext())
                        {
                            RentalOrder order = orderEnum.Current;


                            var unit = units.Where(x => x.ReferenceNumber == order.ObjectId).FirstOrDefault();
                            if (unit != null)
                            {
                                order.IsMachineLocalized = true;
                                order.Latitude           = unit.Latitude;
                                order.Longitude          = unit.Longitude;
                                TimeSpan diffTime = DateTime.Now.Subtract(unit.GpsFixTime);
                                if (diffTime.TotalMinutes > 240)
                                {
                                    order.markerColor = "yellow";
                                }
                                else if (unit.Speed > 15)
                                {
                                    order.markerColor = "green";
                                }
                                else if (unit.Input1.Value == true)
                                {
                                    order.markerColor = "blue";
                                }
                                else
                                {
                                    order.markerColor = "red";
                                }
                            }
                            else
                            {
                                order.IsMachineLocalized = false;
                                order.Latitude           = 0.0;
                                order.Longitude          = 0.0;
                                order.markerColor        = "";
                            }
                        }
                    }
                    //END trackunit


                    //new CustomJsonResult(
                    //return Content(new JavaScriptSerializer().Serialize(orders.ToList()), "application/json");
                    return(new CustomJsonResult {
                        Data = orders.ToList()
                    });
                }
                else
                {
                    return(Json(new { error = "No access" }, JsonRequestBehavior.AllowGet));
                }
            }
            else
            {
                return(auth.Forbidden());
            }
        }