public async Task <ApiResponse <AddComponenteDTO> > addComponente(AddComponenteDTO componente, IFormFile archivo) { ApiResponse <AddComponenteDTO> response = new ApiResponse <AddComponenteDTO>(); try { Componente c = new Componente { Indice = componente.Indice, Nombre = componente.Nombre, SeccionCursoId = componente.SeccionCursoId, Tipo = componente.Tipo }; _context.Componentes.Add(c); await _context.SaveChangesAsync(); int idComponente = c.Id; switch (c.Tipo) { case "texto": c.Texto = componente.Texto; Console.WriteLine(c.Texto); break; case "imagen": Archivo a = new Archivo { ComponenteId = idComponente, Extension = Path.GetExtension(archivo.FileName).Substring(1), Nombre = Path.GetFileNameWithoutExtension(archivo.FileName) }; _context.UploadS3(archivo, "componentFile", a.Nombre + "." + a.Extension); a.Ubicacion = "componentFile/" + a.Nombre + "." + a.Extension; _context.Archivos.Add(a); break; case "archivo": Archivo i = new Archivo { ComponenteId = idComponente, Extension = Path.GetExtension(archivo.FileName).Substring(1), Nombre = Path.GetFileNameWithoutExtension(archivo.FileName) }; _context.UploadS3(archivo, "componentFile", i.Nombre + "." + i.Extension); i.Ubicacion = "componentFile/" + i.Nombre + "." + i.Extension; _context.Archivos.Add(i); break; case "contenedor": ContenedorTarea contenedorTarea = new ContenedorTarea(); contenedorTarea.ComponenteId = idComponente; contenedorTarea.FechaCierre = Convert.ToDateTime(componente.FechaCierre); _context.ContenedoresTareas.Add(contenedorTarea); break; case "comunicado": Comunicado comunicado = new Comunicado { ComponenteId = idComponente, Descripcion = componente.Comunicado.Descripcion, Titulo = componente.Comunicado.Titulo }; _context.Comunicados.Add(comunicado); break; case "encuesta": EncuestaCurso encuesta = new EncuestaCurso { ComponenteId = idComponente, //Fecha = componente.Encuesta.Fecha, IdCurso = componente.CursoId, IdEncuesta = componente.EncuestaId, }; _context.EncuestaCursos.Add(encuesta); break; case "calendario": Calendario calendario = new Calendario { ComponenteId = idComponente, IdCurso = componente.CursoId, Titulo = componente.Nombre, }; _context.Calendarios.Add(calendario); break; } await _context.SaveChangesAsync(); response.Data = componente; GetCursoDTO curso = _mapper.Map <GetCursoDTO>(_context.Cursos .Include(c => c.UsuariosCursos).ThenInclude(uc => uc.Usuario) .Include(c => c.SeccionesCurso) .First(c => c.SeccionesCurso.Any(s => s.Id == componente.SeccionCursoId))); const string q = "\""; foreach (GetUsuarioDTO u in curso.Usuarios) { EmailManager.SendMail(u.Nombre + ":\nSe ha agregado nuevo material al curso " + curso.Nombre + "\n\nUdelar Online.", u.Correo, _config); } } catch (Exception e) { response.Success = false; response.Status = 500; response.Message = e.Message; } return(response); }