using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.IO; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using MisIngredientesVue.Core.Extensions; using MisIngredientesVue.Core.Models; using MisIngredientesVue.Core.Services; namespace MisIngredientesVue.Controllers { [Route("api/[controller]")] [ApiController] public class SettingsController : Controller { private readonly ISettingsService _settingsService; public SettingsController(ISettingsService settingsService) { _settingsService = settingsService; } [HttpGet] public async Task LoadSettings(string types) { return Ok(await _settingsService.GetSettings(User.Identity.GetTenantId(), types.Split(","))); } [HttpPost] public async Task SaveSettings([FromBody]List settings) { return Ok(await _settingsService.SaveSettings(User.Identity.GetTenantId(), settings)); } [Route("emailtemplates")] [HttpGet] public async Task LoadEmailTemplates() { return Ok(await _settingsService.GetEmailTemplates(User.Identity.GetTenantId())); } [Route("emailtemplates/{key}")] [HttpGet] public async Task LoadEmailTemplate(string key) { return Ok(await _settingsService.GetEmailTemplate(User.Identity.GetTenantId(), key)); } [Route("emailtemplates")] [HttpPost] public async Task SaveEmailTemplate(EmailTemplate emailTemplate) { return Ok(await _settingsService.SaveEmailTemplate(User.Identity.GetTenantId(), emailTemplate.Key, emailTemplate.Value)); } [Route("emailtemplates_file")] [HttpPost] public async Task SaveEmailTemplateWithFile([FromForm] SaveEmailTemplateRequest request) { if (request.Image != null) { if (request.Image.Length > 150000) return BadRequest("La imagen es muy grande"); if (request.Image.Length == 0) return BadRequest("No se especificó una imagen"); using (var file = request.Image.OpenReadStream()) { using (var ms = new MemoryStream()) { file.CopyTo(ms); var imageData = ms.ToArray(); return Ok(await _settingsService.SaveEmailTemplate(User.Identity.GetTenantId(), request.Key, request.Value, imageData)); } } } return Ok(await _settingsService.SaveEmailTemplate(User.Identity.GetTenantId(), request.Key, request.Value)); } } public class SaveEmailTemplateRequest { public IFormFile Image { get; set; } [Required] [MaxLength(255)] [Unique] public string Key { get; set; } [Required] [MaxLength(5000)] public string Value { get; set; } } }