Exemplo n.º 1
0
        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);
        }