public async Task <IActionResult> PutRentalOrders(int id, RentalOrders rentalOrders)
        {
            if (id != rentalOrders.Id)
            {
                return(BadRequest());
            }

            _context.Entry(rentalOrders).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RentalOrdersExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        /// <summary>
        /// Sends out notifications to contact people whos machines are going to be offrented in two days
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SendNotifications(object sender, ElapsedEventArgs e)
        {
            DAL _database = new DAL();

            IEnumerable <TrackUnitData> units = _database.GetTrackUnitData();

            string[] dataBases = ConfigurationManager.AppSettings["DataBasePrefix"].Split(',');


            //Get each database off rent orders
            foreach (string dataBase in dataBases)
            {
                RentalOrders rentalOrders = new RentalOrders()
                {
                    Orders = _database.GetRentalOrdersByOffRent(dataBase, DateTime.Now.AddDays(int.Parse(ConfigurationManager.AppSettings["XDaysBefore"])))
                };
                rentalOrders.Orders = rentalOrders.Process(units, rentalOrders.Orders);

                //Remove Rental Orders with missing contact emails
                rentalOrders.Orders = rentalOrders.Orders.Where(i => !string.IsNullOrWhiteSpace(i.ContactEmail));

                //Go thourgh each of the orders
                foreach (RentalOrder order in rentalOrders.Orders)
                {
                    PushNotification notification = new PushNotification()
                    {
                        email               = order.ContactEmail,
                        notificationType    = "OFF_RENT",
                        CustAccount         = order.CustAccount,
                        AccountName         = order.AccountName,
                        SalesId             = order.SalesId,
                        PurchOrderFormNum   = order.PurchOrderFormNum,
                        AssetOverviewItemId = order.AssetOverviewItemId,
                        LineDescription     = order.LineDescription,
                        DateOnHire          = order.DateOnHire,
                        DateOffHire         = order.DateOffHire.Value,
                        ExpectedDateOffHire = order.ExpectedDateOffHire,
                        AssetId             = order.AssetId,
                        DeliveryName        = order.DeliveryName,
                        DeliveryCity        = order.DeliveryCity,
                        DeliveryAddress     = order.DeliveryAddress,
                        ProductId           = order.ProductId,
                        OrderStatusId       = order.OrderStatusId,
                        ContactPerson       = order.ContactPerson,
                        ContactPhone        = order.ContactPhone,
                        OperatorNameId      = order.OperatorNameId,
                        OperatorName        = order.OperatorName,
                        OperatorPhoneNumber = order.OperatorPhoneNumber,
                        InventTransId       = order.InventTransId,
                        PriceRateCode       = order.PriceRateCode,
                        Latitude            = order.Latitude,
                        Longitude           = order.Longitude,
                        CanChangeOffHire    = false,
                        CanChangeOnHire     = false
                    };
                    notification.Send();
                }
            }
            ScheduleNextExecution();
        }
        public async Task <ActionResult <RentalOrders> > PostRentalOrders(RentalOrders rentalOrders)
        {
            _context.RentalOrders.Add(rentalOrders);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (RentalOrdersExists(rentalOrders.Id))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtAction("GetRentalOrders", new { id = rentalOrders.Id }, rentalOrders));
        }