/// <summary>
        /// Inserta una nueva receta en el sistema
        /// </summary>
        /// <param name="receta">Objeto con la receta a insertar</param>
        /// <returns>Devuelve un booleano indicando si la operación ha ido bien o mal</returns>
        public async Task <bool> InsertReceta(Receta receta)
        {
            RecetaEntity   recetaEntity  = new RecetaEntity(receta);
            TableOperation insertOrMerge = TableOperation.InsertOrReplace(recetaEntity);
            var            resultado     = await recetasTabla.ExecuteAsync(insertOrMerge);

            return(resultado.HttpStatusCode == 204);
        }
        /// <summary>
        /// Elimina una receta
        /// </summary>
        /// <param name="categoria">Categoria de la receta</param>
        /// <param name="id">Identificador de la receta</param>
        /// <param name="receta">La receta en sí</param>
        /// <returns>Devuelve un booleano indicando si la operación ha ido bien o mal</returns>
        public async Task <bool> DeleteReceta(string categoria, string id, Receta receta)
        {
            var resultado = await recetasTabla.ExecuteAsync(TableOperation.Retrieve <RecetaEntity>(categoria, id));

            RecetaEntity recetaEntity = (RecetaEntity)resultado.Result;

            resultado = await recetasTabla.ExecuteAsync(TableOperation.Delete(recetaEntity));

            return(resultado.HttpStatusCode == 204);
        }
        /// <summary>
        /// Obtiene una receta según su identificador
        /// </summary>
        /// <param name="categoria">Categoria de la receta</param>
        /// <param name="id">Identificador de la receta. Es un string.</param>
        /// <returns>Devuelve la receta que coincide con la identificador pasado por parámetros</returns>
        public async Task <Receta> GetReceta(string categoria, string id)
        {
            var resultado = await recetasTabla.ExecuteAsync(TableOperation.Retrieve <RecetaEntity>(categoria, id));

            if (resultado.HttpStatusCode == 404 || resultado.Result == null)
            {
                throw new StorageException($"Receta con Id {id} y categoría {categoria} no encontrada en la base de datos.");
            }
            else
            {
                try
                {
                    RecetaEntity recetaEntity = (RecetaEntity)resultado.Result;
                    return(JsonConvert.DeserializeObject <Receta>(recetaEntity.Receta));
                }
                catch (Exception ex)
                {
                    throw new StorageException($"El formato JSON del objeto de base de datos no coincide con el esperado en código.\n Id: {id}\nCategoria: {categoria}\nJson: {resultado.Result}", ex);
                }
            }
        }