Example #1
0
        /// <summary>
        /// Añade la posición de un vehículo dada la referencia de este
        /// </summary>
        /// <param name="reference"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public async Task <bool> AddVehiclePosition(string reference, PositionAPI value)
        {
            // Si ni es un vehiculo ni administrador no podemos añadir la posición
            if (!IsVehicle() && !IsAdmin())
            {
                return(false);
            }

            // Buscamos el vehículo
            var vehicle = await _vehicleRepository.Find(reference);

            if (vehicle == null)
            {
                return(false);
            }
            // Si el usuario no es administrador vemos si es el usuario asociado al vehículo
            if (!IsAdmin() && vehicle.UserId != GetUserId())
            {
                return(false);
            }
            if (value.SetDate == DateTime.MinValue)
            {
                value.SetDate = DateTime.Now;
            }
            // Añadimos la posición
            bool retValue = await _vehicleRepository.AddVehiclePosition(vehicle.Id, value);

            // Notificamos la posicion
            _notifyService.NotifyPosition(vehicle.Id, value);
            return(retValue);
        }