예제 #1
0
        public bool Salvar(EditarExameViewModel viewModel)
        {
            if (viewModel.Upload != null)
            {
                var tamanho = viewModel.Upload.Length / 1000000;
                if (tamanho > 30)
                {
                    AdicionarErroModelState("Seu plano não suporta arquivos maiores de 30mb, por favor escolha um arquivo menor");
                    return(false);
                }
            }

            var exameTipo = _exameTipoRepository.InsereSeNaoExistir(viewModel.TipoOutro);

            if (string.IsNullOrEmpty(viewModel.Id))
            {
                var novoExame = _mapper.Map <Exame>(viewModel);
                novoExame.TipoId    = exameTipo.Id;
                novoExame.TipoOutro = exameTipo.Nome;

                if (viewModel.Upload != null)
                {
                    novoExame.NomeArquivo = viewModel.Upload.FileName;
                    novoExame.ContentType = viewModel.Upload.ContentType;
                    string path = _azureStorageService.Upload(viewModel.Upload.OpenReadStream(), viewModel.Upload.FileName);
                    if (ExisteErrosNoModelState())
                    {
                        return(false);
                    }
                    novoExame.Url       = path;
                    novoExame.Resultado = ObterTextoDoExameSePdf(viewModel);
                }

                _exameRepository.Inserir(novoExame);
                var novoResultado = _uow.Commit();
                return(novoResultado);
            }

            var exame = _exameRepository.ObterPorId(viewModel.Id);

            if (exame == null)
            {
                return(false);
            }
            var exameAtualizado = _mapper.Map <Exame>(viewModel);

            exameAtualizado.TipoId    = exameTipo.Id;
            exameAtualizado.TipoOutro = exameTipo.Nome;
            if (viewModel.Upload != null)
            {
                exameAtualizado.NomeArquivo = viewModel.Upload.FileName;
                exameAtualizado.ContentType = viewModel.Upload.ContentType;
                string path = _azureStorageService.Upload(viewModel.Upload.OpenReadStream(), viewModel.Upload.FileName);
                exameAtualizado.Resultado = ObterTextoDoExameSePdf(viewModel);
                if (ExisteErrosNoModelState())
                {
                    return(false);
                }
                exameAtualizado.Url = path;
            }

            _exameRepository.Atualizar(viewModel.Id, exameAtualizado);
            var atualizacaoResultado = _uow.Commit();

            return(atualizacaoResultado);
        }