Example #1
0
        public async Task <IActionResult> CreateVehicle(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function 'CreateVehicle' processed a request.");


            string  requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data        = JsonConvert.DeserializeObject(requestBody);

            log.LogInformation("requestBody:" + requestBody);
            VehicleModel vehicle = VehicleModelFactory.CreateVehicleModel(data);

            if (!vehicle.DataIsValid)
            {
                var result = new ObjectResult(vehicle.InvalidReason);
                //according to https://www.bennadel.com/blog/2434-http-status-codes-for-invalid-data-400-vs-422.htm
                //if data is formattede correct but not valid a 422 is the correct answer
                result.StatusCode = StatusCodes.Status422UnprocessableEntity;
                return(result);
            }

            await _context.Vehicles.AddAsync(vehicle);

            await _context.SaveChangesAsync();

            string responseMessage = "Vehicle:" + vehicle.VehicleModelName + " (" + vehicle.LicensePlate + ") created";

            return(new OkObjectResult(responseMessage));
        }
Example #2
0
        public async Task <IActionResult> UpdateVehicle(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function 'UpdateVehicle' processed a request.");

            string  requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data        = JsonConvert.DeserializeObject(requestBody);

            if (String.IsNullOrEmpty(requestBody))
            {
                var result = new ObjectResult("Empty requestbody recieved");
                //according to https://www.bennadel.com/blog/2434-http-status-codes-for-invalid-data-400-vs-422.htm
                //if data is formattede correct but not valid a 422 is the correct answer
                result.StatusCode = StatusCodes.Status404NotFound;
                return(result);
            }
            //UserModel user = UserModelFactory.UpdateUserModel(data);
            int id      = (int)data.id;
            var vehicle = _context.Vehicles.First(c => c.Id == id);

            if (vehicle == null)
            {
                vehicle = new VehicleModel()
                {
                    Id = id
                };
                _context.Vehicles.Attach(vehicle);
            }
            else
            {
                VehicleModelFactory.UpdateUserModel(data, ref vehicle);
            }

            _context.Vehicles.Update(vehicle);
            await _context.SaveChangesAsync();

            string responseMessage = "Vehicle updated";

            return(new OkObjectResult(responseMessage));
        }