private ILegenda CreateObject(DataRow dr) { var item = new Legenda { Id = int.Parse(dr["legenda_id"].ToString()), OpfatId = int.Parse(dr["fk_opfat"].ToString()), TipNaPodatokId = int.Parse(dr["fk_tip_na_podatok"].ToString()), Path = dr["path"].ToString() }; return(item); }
/// <summary> /// Lança um novo torrent no portal, registrando os dados de filmes e atores caso não existam, e faz o upload dos devidos arquivos /// </summary> /// <param name="Request">Http Request gerado pela postagem das informações do torrent</param> /// <param name="model">Informações inseridas pelo usuário para o lançamento do torrent</param> /// <param name="usuarioLogado">Usuário que está fazendo o lançamento</param> /// <param name="pastaTorrents">Pasta onde são armazenados os arquivos .torrent</param> /// <param name="pastaLegendas">Pasta onde são armazenados os arquivos de legenda</param> public void LancarTorrent(HttpRequestBase Request, TorrentUploadModel model, Usuario usuarioLogado, string pastaTorrents, string pastaLegendas) { try { HttpPostedFileBase torrentFile = Request.Files["torrentFile"]; var arquivoTorrent = String.Format("{0}\\{1}", pastaTorrents, torrentFile.FileName); torrentFile.SaveAs(arquivoTorrent); var dadosTorrent = MonoTorrent.Common.Torrent.Load(arquivoTorrent); var repositorioPrincipal = new DataRepository <BitShareData.Torrent>(); var bitShareTorrent = new BitShareData.Torrent(); var filmeImdb = CarregarFilmeImdb(model.IdImdb); var repositorioFilme = new DataRepository <Filme>(repositorioPrincipal.Context); var filmesEncontrados = from item in repositorioFilme.Fetch() where item.IdImdb == model.IdImdb select item; if (filmesEncontrados.Count() > 0) { bitShareTorrent.Filme = filmesEncontrados.First(); } else { bitShareTorrent.Filme = CriarNovoFilme(repositorioFilme, filmeImdb, model); } var nomeTorrent = String.Format("[{0}] [{1} {2}] [{3} {4}]", filmeImdb.Titulo, model.CodecVideo, model.Resolucao, model.CodecAudio, model.Audio); if (model.Dublado) { nomeTorrent += " [Dub]"; } bitShareTorrent.IdTorrent = 0; bitShareTorrent.Nome = nomeTorrent; bitShareTorrent.Arquivo = torrentFile.FileName; bitShareTorrent.Categoria = "";//model.Categoria; bitShareTorrent.HashInfo = dadosTorrent.InfoHash.ToString(); bitShareTorrent.Tamanho = dadosTorrent.Size; bitShareTorrent.Seeds = 0; bitShareTorrent.Leechers = 0; bitShareTorrent.DataLancamento = DateTime.Now; bitShareTorrent.FreeLeech = false; bitShareTorrent.Ativo = true; bitShareTorrent.PrimeiroSnatch = false; bitShareTorrent.Downloads = 0; bitShareTorrent.Resolucao = model.Resolucao; bitShareTorrent.Audio = model.Audio; bitShareTorrent.CodecAudio = model.CodecAudio; bitShareTorrent.CodecVideo = model.CodecVideo; bitShareTorrent.Observacoes = model.Observacoes == null ? "" : model.Observacoes; bitShareTorrent.Dublado = model.Dublado; // Informações de legenda enviadas no lançamento if (Request.Files.Count > 1) { for (int indice = 1; indice < Request.Files.Count; indice++) { if (Request.Files[indice].FileName != "") { Request.Files[indice].SaveAs(String.Format("{0}\\{1}", pastaLegendas, Request.Files[indice].FileName)); var legenda = new Legenda(); legenda.IdLegenda = 0; legenda.Idioma = model.idiomaLegenda[indice - 1]; legenda.Arquivo = Request.Files[indice].FileName; bitShareTorrent.Filme.Legendas.Add(legenda); } } } // Informações dos arquivos presentes no torrent foreach (var file in dadosTorrent.Files) { var arquivo = new ArquivoTorrent(); arquivo.Nome = file.Path; arquivo.Tamanho = file.Length; bitShareTorrent.ArquivoTorrents.Add(arquivo); } // recupera o usuário pela entity, para poder fazer o relacionamento com o Torrent var repositorioUsuario = new DataRepository <Usuario>(repositorioPrincipal.Context); var usuarioLancamento = (from item in repositorioUsuario.Fetch() where item.IdUsuario == usuarioLogado.IdUsuario select item).First(); bitShareTorrent.UsuarioLancamento = usuarioLancamento; repositorioPrincipal.Add(bitShareTorrent); repositorioPrincipal.SaveChanges(); } catch (Exception) { throw; } finally { } }