Exemplo n.º 1
0
        public async Task <IActionResult> Edit(int id, [Bind("ID,NomeRede,NomeArquivo,Descricao,DataUpload")] ArquivoRedeBayesiana arquivoRedeBayesiana)
        {
            if (id != arquivoRedeBayesiana.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(arquivoRedeBayesiana);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ArquivoRedeBayesianaExists(arquivoRedeBayesiana.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(arquivoRedeBayesiana));
        }
        public async Task <ArquivoRedeBayesiana> AddArquivoRedeBayesiana(ArquivoRedeViewModel arg)
        {
            ArquivoRedeBayesiana arquivoRedeBayesiana = new ArquivoRedeBayesiana();

            arquivoRedeBayesiana.DataUpload  = DateTime.Now;
            arquivoRedeBayesiana.Descricao   = arg.Descricao;
            arquivoRedeBayesiana.NomeRede    = string.IsNullOrEmpty(arg.NomeRede) ? arg.RedeBayesianaJson.Network.name : arg.NomeRede;
            arquivoRedeBayesiana.ArquivoJson = JsonConvert.SerializeObject(arg.RedeBayesianaJson);



            //Necessario salvar para obter id para usar no nome do arquivo
            _context.ArquivosRedeBayesiana.Add(arquivoRedeBayesiana);
            await _context.SaveChangesAsync();

            //Atualiza nome arquivo com Id e salva novamente
            arquivoRedeBayesiana.NomeArquivo = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + "_" + arquivoRedeBayesiana.ID.ToString("D8") + ".json";
            _context.ArquivosRedeBayesiana.Update(arquivoRedeBayesiana);
            await _context.SaveChangesAsync();

            var serializerSettings = new JsonSerializerSettings
            {
                TypeNameHandling           = TypeNameHandling.Auto,
                ContractResolver           = new CollectionAsObjectResolver(),
                PreserveReferencesHandling = PreserveReferencesHandling.Objects
            };
            var serializer = JsonSerializer.Create(serializerSettings);


            // write to disk
            using (FileStream stream = new FileStream(@"RepoArquivos/" + @arquivoRedeBayesiana.NomeArquivo, FileMode.Create))
            {
                var streamWriter = new StreamWriter(stream);
                var jsonWriter   = new JsonTextWriter(streamWriter);
                serializer.Serialize(jsonWriter, arg.RedeBayesianaJson);
                jsonWriter.Flush();
            }
            return(arquivoRedeBayesiana);
        }