using EnertechWebAPI.Interfaces; using EnertechWebAPI.Models; using EnertechWebAPI.Requests; using EnertechWebAPI.Responses; using EnertechWebAPI.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace EnertechWebAPI.Controllers { [Authorize] [Route("api/[controller]")] [ApiController] public class UserAppliancesController : BaseApiController { private readonly IUserAppliancesService userappliancesService; public UserAppliancesController(IUserAppliancesService userappliancesService) { this.userappliancesService = userappliancesService; } [HttpGet] public async Task Get() { var getAppliancesResponse = await userappliancesService.GetUserAppliances(UserID); if (!getAppliancesResponse.Success) { return UnprocessableEntity(getAppliancesResponse); } var appResponse = getAppliancesResponse.UserAppliances.ConvertAll(o => new UserAppliancesResponse { userId = UserID, ApplianceId = o.ApplianceId, Name = o.Name, Price = o.Price, bought = o.bought }); return Ok(appResponse); } [HttpPost] public async Task Post(AppliancesRequest appRequest) { var app = new UserAppliance { ApplianceId = appRequest.ApplianceId, Name = appRequest.Name, Price = appRequest.Price, bought = true, userId = UserID }; var postUserApplianceResponse = await userappliancesService.PostUserAppliances(app); if (!postUserApplianceResponse.Success) { return UnprocessableEntity(postUserApplianceResponse); } var postResponse = new UserAppliancesResponse { ApplianceId = postUserApplianceResponse.UserAppliance.ApplianceId, Name = postUserApplianceResponse.UserAppliance.Name, Price = postUserApplianceResponse.UserAppliance.Price, bought = postUserApplianceResponse.UserAppliance.bought, userId = UserID }; return Ok(postResponse); } [HttpPut("{appId}")] public async Task Put(int appId) { var putResponse = await userappliancesService.PutAppliance(appId, UserID); if (!putResponse.Success) { return UnprocessableEntity(putResponse); } return Ok(putResponse); } } }