Пример #1
0
        public async Task <IActionResult> Importar([FromForm] ImportarDisciplinas importarDisciplinas)
        {
            AppResponse resposta = await _disciplinaService.ImportarDisciplinas(importarDisciplinas);

            if (resposta.Sucesso)
            {
                return(Ok(resposta));
            }

            return(BadRequest(resposta));
        }
Пример #2
0
        public async Task <AppResponse> Importar(ImportarDisciplinas request)
        {
            var content = new MultipartFormDataContent();

            var imagemBytes = new ByteArrayContent(FileHelper.ConvertToBytes(request.Arquivo));

            imagemBytes.Headers.Add("content-type", "application/vnd.ms-excel");

            content.Add(imagemBytes, BotarAspas("arquivo"), BotarAspas("excel-importacao.xlsx"));

            HttpResponseMessage resposta = await httpClient.PostAsync("Disciplinas/Importar", content);

            AppResponse conteudoResposta = await resposta.Content.ReadFromJsonAsync <AppResponse>();

            return(conteudoResposta);
        }
Пример #3
0
        public async Task <AppResponse> ImportarDisciplinas(ImportarDisciplinas importarAlunos)
        {
            var erros = new List <string>();

            if (importarAlunos.Arquivo.Length == 0)
            {
                return(new AppResponse(false, "Arquivo não informado ou corrompido."));
            }
            else
            {
                var    filePath = Path.GetTempFileName();
                string destino  = Path.Combine(_hostingEnvironment.WebRootPath, "Importacoes", Guid.NewGuid() + ".xlsx");

                using (var stream = new FileStream(destino, FileMode.Create))
                    await importarAlunos.Arquivo.CopyToAsync(stream);

                Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-BR");
                IWorkbook workbook = new XSSFWorkbook();
                ISheet    sheet;

                using (var stream = new FileStream(destino, FileMode.Open))
                {
                    stream.Position = 0;
                    XSSFWorkbook xssWorkbook = new XSSFWorkbook(stream);
                    sheet = xssWorkbook.GetSheetAt(0);
                }

                int linha       = 0;
                var disciplinas = new List <Disciplina>();

                foreach (IRow row in sheet)
                {
                    if (linha == 0)
                    {
                        linha++;
                        continue;
                    }

                    string nome       = row.GetCell(0).ToString();
                    string descritivo = row.GetCell(1).ToString();
                    string horario    = row.GetCell(2).ToString();

                    var disciplina = new Disciplina(nome, descritivo, horario);
                    if (!disciplina.TaValido())
                    {
                        erros.Add(string.Join("\n", disciplina.ObterErros().Select(e => e.Mensagem).ToList()));
                    }
                    else
                    {
                        disciplinas.Add(disciplina);
                    }

                    linha++;
                }

                foreach (Disciplina disciplina in disciplinas)
                {
                    _uow.Disciplinas.Add(disciplina);
                }

                await _uow.CommitAsync();
            }

            if (erros.Count == 0)
            {
                return(new AppResponse(true, "Importação realizada com sucesso."));
            }
            else
            {
                return(new AppResponse(true, $"Importação realizada, porem ocorreram alguns erros:\n {string.Join("\n", erros)}"));
            }
        }