Esempio n. 1
0
        public async Task <List <ResourceOrder> > GetOpenAvailableOrders(int departmentId)
        {
            var orders = new List <ResourceOrder>();

            var departmentSettings = await _resourceOrdersRepository.GetOrderSettingByDepartmentId(departmentId);

            var department        = _departmentsService.GetDepartmentById(departmentId);
            var mapCenterLocation = _departmentSettingsService.GetMapCenterCoordinates(department);

            // Target department does not want to recieve orders
            if (departmentSettings != null && departmentSettings.DoNotReceiveOrders)
            {
                return(orders);
            }

            //var allRangeOrders = await _resourceOrdersRepository.GetAllOpenOrdersByRange(departmentId);
            var allRangeOrders =
                await _genericResourceOrderRepository.GetAll()
                .Where(x => x.DepartmentId != departmentId && x.CloseDate == null && x.Visibility == 0)
                .ToListAsync();

            orders.AddRange(allRangeOrders.Where(x => (x.OriginLocation.GetDistanceTo(new GeoCoordinate(mapCenterLocation.Latitude.Value, mapCenterLocation.Longitude.Value)) / 1609.344) <= x.Range));
            //orders.AddRange(await _resourceOrdersRepository.GetAllOpenOrdersUnrestricted(departmentId));
            orders.AddRange(await _genericResourceOrderRepository.GetAll().Where(x => x.DepartmentId != departmentId && x.CloseDate == null && x.Visibility == 3).ToListAsync());
            orders.AddRange(await _resourceOrdersRepository.GetAllOpenOrdersLinked(departmentId));

            return(orders);
        }