Exemple #1
0
        public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "tarefas/criar")] HttpRequestMessage req, TraceWriter log)
        {
            try
            {
                Task <HttpResponseMessage> result;

                switch (req.Method.Method)
                {
                case "POST":
                    result = ExecutarPostAsync(req, log);
                    break;

                default:
                    result = Comum.GetBadRequest(req, log);
                    break;
                }

                return(await result);
            }
            catch (System.Exception ex)
            {
                log.Error("Ocorreu um erro.", ex);
                throw;
            }
        }
Exemple #2
0
        private static async Task <HttpResponseMessage> ExecutarGetAsync(HttpRequestMessage req, string idTarefa, TraceWriter log, IMongoCollection <BsonDocument> collection)
        {
            HttpResponseMessage response;
            List <BsonDocument> resultado;

            var nomeTarefa = Comum.GetQueryString(req, "nome");

            if (!string.IsNullOrWhiteSpace(idTarefa))
            {
                var filter = Builders <BsonDocument> .Filter.Eq <ObjectId>("_id", ObjectId.Parse(idTarefa));

                resultado = await collection.Find(filter).ToListAsync().ConfigureAwait(false);

                if (resultado.Count() > 0)
                {
                    response = req.CreateResponse(HttpStatusCode.OK, resultado[0].ToString());
                }
                else
                {
                    response = req.CreateResponse(HttpStatusCode.NotFound, $"Tarefa não encontrada. Código da tarefa: {idTarefa}");
                }
            }
            else if (!string.IsNullOrEmpty(nomeTarefa))
            {
                var filter = Builders <BsonDocument> .Filter.Regex("Nome", new BsonRegularExpression(nomeTarefa));

                resultado = await collection.Find(filter).ToListAsync().ConfigureAwait(false);

                response = req.CreateResponse(HttpStatusCode.OK, resultado.ToJson());
            }
            else
            {
                resultado = await collection.Find(Builders <BsonDocument> .Filter.Empty).ToListAsync().ConfigureAwait(false);

                response = req.CreateResponse(HttpStatusCode.OK, resultado.ToJson());
            }

            return(response);
        }
Exemple #3
0
        public static Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "put", "delete", Route = "tarefas/{idTarefa?}")] HttpRequestMessage req, TraceWriter log, string idTarefa)
        {
            try
            {
                log.Info("Executando requisição.");
                Task <HttpResponseMessage> result;
                var tarefasCollections = TarefaCollection.Instance;

                switch (req.Method.Method)
                {
                case "GET":
                    result = ExecutarGetAsync(req, idTarefa, log, tarefasCollections);
                    break;

                case "PUT":
                    result = ExecutarPutAsync(req, idTarefa, log, tarefasCollections);
                    break;

                case "DELETE":
                    result = ExecutarDeleteAsync(req, idTarefa, log, tarefasCollections);
                    break;

                default:
                    result = Comum.GetBadRequest(req, log);
                    break;
                }

                log.Info("Término requisição.");

                return(result);
            }
            catch (System.Exception ex)
            {
                log.Error("Ocorreu um erro.", ex);
                throw;
            }
        }
Exemple #4
0
        private static async Task <HttpResponseMessage> ExecutarPutAsync(HttpRequestMessage req, string idTarefa, TraceWriter log, IMongoCollection <BsonDocument> collection)
        {
            HttpResponseMessage response;
            var filtro = Builders <BsonDocument> .Filter.Eq <ObjectId>("_id", ObjectId.Parse(idTarefa));

            var tarefaJson = await req.Content.ReadAsStringAsync();

            var tarefaAlterada = Comum.ConverterJsonToBson(tarefaJson);

            UpdateDefinition <BsonDocument> update = null;

            foreach (var propriedade in tarefaAlterada)
            {
                if (update == null)
                {
                    update = Builders <BsonDocument> .Update.Set(propriedade.Name, propriedade.Value);
                }
                else
                {
                    update = update.Set(propriedade.Name, propriedade.Value);
                }
            }

            var resultadoUpdate = await collection.UpdateOneAsync(filtro, update).ConfigureAwait(false);

            if (resultadoUpdate.ModifiedCount == 1)
            {
                response = req.CreateResponse(HttpStatusCode.OK, $"Tarefa alterada com sucesso. Código da tarefa: {idTarefa}");
            }
            else
            {
                response = req.CreateResponse(HttpStatusCode.NotFound, $"Tarefa não pode ser atualizada. Código da tarefa: {idTarefa}");
            }

            return(response);
        }