public Episodio(Episodio episodio) { Clone(episodio); }
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); } }