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);
        }
示例#2
0
        /// <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
            {
            }
        }