예제 #1
0
 public Episodio(Episodio episodio)
 {
     Clone(episodio);
 }
예제 #2
0
        private bool SetarAtributosEpisodioIdentificado()
        {
            var serieAliasService = App.Container.Resolve <SerieAliasService>();
            var seriesService     = App.Container.Resolve <SeriesService>();
            var episodiosService  = App.Container.Resolve <EpisodiosService>();

            List <SerieAlias> lstAlias = serieAliasService.GetLista();
            SerieAlias        alias    =
                lstAlias.FirstOrDefault(
                    x =>
                    Regex.Replace(
                        x.sDsAlias.Replace(".", " ")
                        .Replace("_", " ")
                        .Replace("'", "")
                        .Trim(),
                        @"[^a-zA-Z0-9\s]", "") == oSerie.sDsTitulo);

            if (alias != null)
            {
                oSerie = seriesService.Get(alias.nCdVideo);
            }

            if (oSerie.nCdVideo == 0)
            {
                Serie oSerieTemp = seriesService.GetSerieOuAnimePorLevenshtein(oSerie.sDsTitulo);

                if (oSerieTemp != null)
                {
                    oSerie = oSerieTemp;
                }
            }

            if (oSerie.nCdVideo > 0)
            {
                List <Episodio> lstEpisodios = episodiosService.GetLista(oSerie);

                if (alias != null)
                {
                    Episodio episodio;
                    Episodio primeiroEpisodioAbsolutoAlias = null;

                    if (nNrAbsoluto > 0)
                    {
                        primeiroEpisodioAbsolutoAlias =
                            lstEpisodios.FirstOrDefault(
                                x =>
                                x.nNrTemporada == alias.nNrTemporada &&
                                x.nNrEpisodio == alias.nNrEpisodio);
                        if (primeiroEpisodioAbsolutoAlias != null)
                        {
                            episodio =
                                lstEpisodios.FirstOrDefault(
                                    x =>
                                    x.nNrAbsoluto ==
                                    primeiroEpisodioAbsolutoAlias.nNrAbsoluto + nNrAbsoluto - 1);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        episodio =
                            lstEpisodios.FirstOrDefault(
                                x =>
                                x.nNrTemporada == alias.nNrTemporada + nNrTemporada - 1 &&
                                x.nNrEpisodio == alias.nNrEpisodio + nNrEpisodio - 1);
                    }

                    if (episodio == null) // Se não encontrou o episódio retorna falso.
                    {
                        return(false);
                    }

                    episodio.lstIntEpisodios          = lstIntEpisodios;
                    episodio.lstIntEpisodiosAbsolutos = lstIntEpisodiosAbsolutos;
                    episodio.oSerie          = oSerie;
                    episodio.nIdTipoConteudo = episodio.oSerie.nIdTipoConteudo;

                    for (var i = 0;
                         i < (nNrAbsoluto > 0
                                  ? episodio.lstIntEpisodiosAbsolutos.Count
                                  : episodio.lstIntEpisodios.Count);
                         i++)
                    {
                        Episodio episodioTemp = null;

                        // Ajuste no numero do episodio caso este seja de um alias que não comece no primeiro episodio da primeira temporada.
                        if (nNrAbsoluto > 0)
                        {
                            episodio.lstIntEpisodiosAbsolutos[i] = (int)primeiroEpisodioAbsolutoAlias.nNrAbsoluto +
                                                                   episodio.lstIntEpisodiosAbsolutos[i] - 1;
                            episodioTemp =
                                lstEpisodios.FirstOrDefault(x => x.nNrAbsoluto == episodio.lstIntEpisodiosAbsolutos[i]);
                            if (episodioTemp != null)
                            {
                                episodio.lstIntEpisodios.Add(episodioTemp.nNrEpisodio);
                            }
                        }
                        else
                        {
                            episodio.lstIntEpisodios[i] = alias.nNrEpisodio + lstIntEpisodios[i] - 1;
                            episodioTemp =
                                lstEpisodios.FirstOrDefault(
                                    x =>
                                    x.nNrTemporada == episodio.nNrTemporada &&
                                    x.nNrEpisodio == episodio.lstIntEpisodios[i]);
                            if (episodioTemp?.nNrAbsoluto != null)
                            {
                                episodio.lstIntEpisodiosAbsolutos.Add((int)episodioTemp.nNrAbsoluto);
                            }
                        }

                        if (i != 0 && episodioTemp != null)
                        {
                            episodio.sDsEpisodio += " & " + episodioTemp.sDsEpisodio;
                        }
                    }

                    Clone(episodio);
                }
                else
                {
                    Episodio episodio = nNrAbsoluto > 0
                                            ? lstEpisodios.FirstOrDefault(x => x.nNrAbsoluto == nNrAbsoluto)
                                            : lstEpisodios.FirstOrDefault(
                        x =>
                        x.nNrTemporada == nNrTemporada &&
                        x.nNrEpisodio == nNrEpisodio);

                    if (episodio == null)
                    {
                        return(false);
                    }

                    episodio.lstIntEpisodios          = lstIntEpisodios;
                    episodio.lstIntEpisodiosAbsolutos = lstIntEpisodiosAbsolutos;
                    episodio.oSerie          = oSerie;
                    episodio.nIdTipoConteudo = episodio.oSerie.nIdTipoConteudo;

                    if (nNrAbsoluto > 0) // TODO Testar pra ver o pq desse if :D
                    {
                        episodio.nNrAbsoluto = nNrAbsoluto;
                    }

                    for (var i = 0;
                         i < (nNrAbsoluto > 0
                                  ? episodio.lstIntEpisodiosAbsolutos.Count
                                  : episodio.lstIntEpisodios.Count);
                         i++)
                    {
                        Episodio episodioTemp;
                        // Ajuste no numero do episodio caso este seja de um alias que não comece no primeiro episodio da primeira temporada.
                        if (nNrAbsoluto > 0)
                        {
                            episodioTemp =
                                lstEpisodios.FirstOrDefault(x => x.nNrAbsoluto == episodio.lstIntEpisodiosAbsolutos[i]);
                            if (episodioTemp != null)
                            {
                                episodio.lstIntEpisodios.Add(episodioTemp.nNrEpisodio);
                            }
                        }
                        else
                        {
                            episodioTemp =
                                lstEpisodios.FirstOrDefault(
                                    x =>
                                    x.nNrTemporada == nNrTemporada &&
                                    x.nNrEpisodio == episodio.lstIntEpisodios[i]);
                            // TODO Testar pra ver se funfa
                            if (episodioTemp?.nNrAbsoluto != null)
                            {
                                episodio.lstIntEpisodiosAbsolutos.Add((int)episodioTemp.nNrAbsoluto);
                            }
                        }

                        if (i != 0 && episodioTemp != null)
                        {
                            episodio.sDsEpisodio += " & " + episodioTemp.sDsEpisodio;
                        }
                    }

                    Clone(episodio);
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }