Skip to content

Commit 8684ef6

Browse files
committed
refactor: refactor data extraction to use a common method
Consolidate the logic for creating ListItem instances by introducing the TransformDetailsIntoListItem method. This reduces code duplication and simplifies updates.
1 parent e3480d3 commit 8684ef6

File tree

1 file changed

+82
-137
lines changed

1 file changed

+82
-137
lines changed

FoliCon/Modules/TMDB/TmdbDataTransformer.cs

+82-137
Original file line numberDiff line numberDiff line change
@@ -23,67 +23,46 @@ public static ObservableCollection<ListItem> ExtractCollectionDetailsIntoListIte
2323
var items = new ObservableCollection<ListItem>();
2424
foreach (var item in result.Results)
2525
{
26-
var mediaName = item.Name;
27-
const string year = "";
28-
const string rating = "";
29-
var poster = Convert.ToString(item.PosterPath != null ? SmallPosterBase + item.PosterPath : null,
30-
CultureInfo.InvariantCulture);
31-
32-
items.Add(new ListItem
33-
{
34-
Title = mediaName,
35-
Year = year,
36-
Rating = rating,
37-
Overview = item.Overview,
38-
Poster = poster,
39-
Id = item.Id.ToString()
40-
});
26+
items.Add(TransformDetailsIntoListItem(item.Name,
27+
null,
28+
null,
29+
item.Overview,
30+
item.PosterPath,
31+
item.Id));
4132
}
4233

4334
return items;
4435
}
45-
36+
4637
public static ObservableCollection<ListItem> ExtractCollectionDetailsIntoListItem(
4738
Collection result)
4839
{
49-
var items = new ObservableCollection<ListItem>();
50-
var mediaName = result.Name;
51-
const string year = "";
52-
const string rating = "";
53-
var poster = Convert.ToString(result.PosterPath != null ? SmallPosterBase + result.PosterPath : null, CultureInfo.InvariantCulture);
54-
items.Add(new ListItem
55-
{
56-
Title = mediaName,
57-
Year = year,
58-
Rating = rating,
59-
Overview = result.Overview,
60-
Poster = poster,
61-
Id = result.Id.ToString()
62-
});
63-
64-
return items;
40+
return
41+
[
42+
TransformDetailsIntoListItem(
43+
result.Name,
44+
null,
45+
null,
46+
result.Overview,
47+
result.PosterPath,
48+
result.Id
49+
)
50+
];
6551
}
6652

67-
public static ObservableCollection<ListItem> ExtractMoviesDetailsIntoListItem(
68-
Movie result)
53+
public static ObservableCollection<ListItem> ExtractMoviesDetailsIntoListItem(Movie result)
6954
{
70-
var items = new ObservableCollection<ListItem>();
71-
var mediaName = result.Title;
72-
var year = result.ReleaseDate != null ? result.ReleaseDate.Value.Year.ToString(CultureInfo.InvariantCulture) : "";
73-
var rating = result.VoteAverage.ToString(CultureInfo.CurrentCulture);
74-
var overview = result.Overview;
75-
var poster = result.PosterPath != null ? SmallPosterBase + result.PosterPath : null;
76-
items.Add(new ListItem
77-
{
78-
Title = mediaName,
79-
Year = year,
80-
Rating = rating,
81-
Overview = overview,
82-
Poster = poster,
83-
Id = result.Id.ToString()
84-
});
85-
86-
return items;
55+
return
56+
[
57+
TransformDetailsIntoListItem(
58+
result.Title,
59+
result.ReleaseDate,
60+
result.VoteAverage,
61+
result.Overview,
62+
result.PosterPath,
63+
result.Id
64+
)
65+
];
8766
}
8867

8968
public static ObservableCollection<ListItem> ExtractMoviesDetailsIntoListItem(
@@ -92,22 +71,12 @@ public static ObservableCollection<ListItem> ExtractMoviesDetailsIntoListItem(
9271
var items = new ObservableCollection<ListItem>();
9372
foreach (var item in result.Results)
9473
{
95-
var mediaName = item.Title;
96-
var year = item.ReleaseDate != null
97-
? item.ReleaseDate.Value.Year.ToString(CultureInfo.InvariantCulture)
98-
: "";
99-
var rating = item.VoteAverage.ToString(CultureInfo.CurrentCulture);
100-
var overview = item.Overview;
101-
var poster = item.PosterPath != null ? SmallPosterBase + item.PosterPath : null;
102-
items.Add(new ListItem
103-
{
104-
Title = mediaName,
105-
Year = year,
106-
Rating = rating,
107-
Overview = overview,
108-
Poster = poster,
109-
Id = item.Id.ToString()
110-
});
74+
items.Add(TransformDetailsIntoListItem(item.Title,
75+
item.ReleaseDate,
76+
item.VoteAverage,
77+
item.Overview,
78+
item.PosterPath,
79+
item.Id));
11180
}
11281

11382
return items;
@@ -118,113 +87,89 @@ public static ObservableCollection<ListItem> ExtractTvDetailsIntoListItem(Search
11887
var items = new ObservableCollection<ListItem>();
11988
foreach (var item in result.Results)
12089
{
121-
var mediaName = item.Name;
122-
var year = item.FirstAirDate != null ? item.FirstAirDate.Value.Year.ToString(CultureInfo.InvariantCulture) : "";
123-
var rating = item.VoteAverage.ToString(CultureInfo.CurrentCulture);
124-
var overview = item.Overview;
125-
var poster = item.PosterPath != null ? SmallPosterBase + item.PosterPath : null;
126-
items.Add(new ListItem
127-
{
128-
Title = mediaName,
129-
Year = year,
130-
Rating = rating,
131-
Overview = overview,
132-
Poster = poster,
133-
Id = item.Id.ToString()
134-
});
90+
items.Add(TransformDetailsIntoListItem(item.Name,
91+
item.FirstAirDate,
92+
item.VoteAverage,
93+
item.Overview,
94+
item.PosterPath,
95+
item.Id));
13596
}
13697

13798
return items;
13899
}
139-
100+
140101
public static ObservableCollection<ListItem> ExtractTvDetailsIntoListItem(TvShow result)
141102
{
142-
var items = new ObservableCollection<ListItem>();
143-
var mediaName = result.Name;
144-
var year = result.FirstAirDate != null
145-
? result.FirstAirDate.Value.Year.ToString(CultureInfo.InvariantCulture)
146-
: "";
147-
var rating = result.VoteAverage.ToString(CultureInfo.CurrentCulture);
148-
var overview = result.Overview;
149-
var poster = result.PosterPath != null ? SmallPosterBase + result.PosterPath : null;
150-
items.Add(new ListItem
151-
{
152-
Title = mediaName,
153-
Year = year,
154-
Rating = rating,
155-
Overview = overview,
156-
Poster = poster,
157-
Id = result.Id.ToString()
158-
});
159-
160-
return items;
103+
return
104+
[
105+
TransformDetailsIntoListItem(
106+
result.Name,
107+
result.FirstAirDate,
108+
result.VoteAverage,
109+
result.Overview,
110+
result.PosterPath,
111+
result.Id
112+
)
113+
];
161114
}
162115

163116
public static ObservableCollection<ListItem> ExtractResourceDetailsIntoListItem(
164117
SearchContainer<SearchBase> result)
165118
{
166119
Logger.Debug("Extracting Resource Details into List Item");
167120
var items = new ObservableCollection<ListItem>();
168-
var mediaName = "";
169-
var year = "";
170-
var rating = "";
171-
var overview = "";
172-
string poster = null;
173-
var id = 0;
121+
174122
foreach (var item in result.Results)
175123
{
176124
var mediaType = item.MediaType;
177125

178126
Logger.Debug("Media Type: {MediaType}", mediaType);
127+
ListItem listItem;
179128
switch (mediaType)
180129
{
181130
case MediaType.Tv:
182131
{
183132
var res = (SearchTv)item;
184-
id = res.Id;
185-
mediaName = res.Name;
186-
year = res.FirstAirDate != null
187-
? res.FirstAirDate.Value.Year.ToString(CultureInfo.InvariantCulture)
188-
: "";
189-
rating = res.VoteAverage.ToString(CultureInfo.CurrentCulture);
190-
overview = res.Overview;
191-
poster = res.PosterPath != null ? SmallPosterBase + res.PosterPath : null;
133+
listItem = TransformDetailsIntoListItem(res.Name, res.FirstAirDate, res.VoteAverage, res.Overview,
134+
res.PosterPath, res.Id);
192135
break;
193136
}
194137
case MediaType.Movie:
195138
{
196139
var res = (SearchMovie)item;
197-
id = res.Id;
198-
mediaName = res.Title;
199-
year = res.ReleaseDate != null
200-
? res.ReleaseDate.Value.Year.ToString(CultureInfo.InvariantCulture)
201-
: "";
202-
rating = res.VoteAverage.ToString(CultureInfo.CurrentCulture);
203-
overview = res.Overview;
204-
poster = res.PosterPath != null ? SmallPosterBase + res.PosterPath : null;
140+
listItem = TransformDetailsIntoListItem(res.Title, res.ReleaseDate, res.VoteAverage, res.Overview,
141+
res.PosterPath, res.Id);
205142
break;
206143
}
144+
default: continue;
207145
}
208146

209-
Logger.Trace(
210-
"Media Name: {MediaName}, Year: {Year}, Rating: {Rating}, Overview:{Pverview}, PosterPath: {Poster}",
211-
mediaName, year, rating, overview, poster);
212-
items.Add(new ListItem
213-
{
214-
Title = mediaName,
215-
Year = year,
216-
Rating = rating,
217-
Overview = overview,
218-
Poster = poster,
219-
Id = id.ToString(),
220-
MediaType = mediaType
221-
});
222-
Logger.Info("Added {MediaName} to List", mediaName);
147+
Logger.Trace("Adding {item}", listItem);
148+
items.Add(listItem);
149+
Logger.Info("Added {MediaName} to List", listItem.Title);
223150
}
224151

225152
return items;
226153
}
227154

155+
public static ListItem TransformDetailsIntoListItem(
156+
string mediaName, DateTime? date, double? ratingValue, string overview, string posterPath, int id)
157+
{
158+
var year = date != null ? date.Value.Year.ToString(CultureInfo.InvariantCulture) : string.Empty;
159+
var rating = ratingValue != null ? ratingValue.Value.ToString(CultureInfo.CurrentCulture) : string.Empty;
160+
var poster = posterPath != null ? SmallPosterBase + posterPath : null;
161+
162+
return new ListItem
163+
{
164+
Title = mediaName,
165+
Year = year,
166+
Rating = rating,
167+
Overview = overview,
168+
Poster = poster,
169+
Id = id.ToString()
170+
};
171+
}
172+
228173
/// <summary>
229174
/// Prepares the Selected Result for Download And final List View
230175
/// </summary>

0 commit comments

Comments
 (0)