Fixed build and collection order

pull/3895/head
tidusjar 5 years ago
parent 723aa3fffc
commit cb12160a97

@ -23,7 +23,7 @@ namespace Ombi.Core.Engine.V2
{
public MultiSearchEngine(IPrincipal identity, IRequestServiceMain requestService, IRuleEvaluator rules,
OmbiUserManager um, ICacheService cache, ISettingsService<OmbiSettings> ombiSettings, IRepository<RequestSubscription> sub,
IMovieDbApi movieDbApi, ISettingsService<LidarrSettings> lidarrSettings, IMusicBrainzApi musicApi)
IMovieDbApi movieDbApi, ISettingsService<LidarrSettings> lidarrSettings, IMusicBrainzApi musicApi)
: base(identity, requestService, rules, um, cache, ombiSettings, sub)
{
_movieDbApi = movieDbApi;
@ -36,12 +36,12 @@ namespace Ombi.Core.Engine.V2
private readonly IMusicBrainzApi _musicApi;
public async Task<List<MultiSearchResult>> MultiSearch(string searchTerm, CancellationToken cancellationToken, string lang = "en")
public async Task<List<MultiSearchResult>> MultiSearch(string searchTerm, CancellationToken cancellationToken, string lang = "en")
{
var model = new List<MultiSearchResult>();
var movieDbData = (await _movieDbApi.MultiSearch(searchTerm, lang, cancellationToken)).results;
var lidarrSettings = await _lidarrSettings.GetSettingsAsync();
if (lidarrSettings.Enabled)
{
@ -51,7 +51,8 @@ namespace Ombi.Core.Engine.V2
model.Add(new MultiSearchResult
{
MediaType = "Artist",
Title = artist.name
Title = artist.name,
Id = artist.id
});
}
}
@ -67,10 +68,36 @@ namespace Ombi.Core.Engine.V2
{
if (multiSearch.release_date.HasValue() && DateTime.TryParse(multiSearch.release_date, out var releaseDate))
{
result.Title =
result.Title = $"{multiSearch.title} ({releaseDate.Year})";
}
else
{
result.Title = multiSearch.title;
}
}
if (multiSearch.media_type.Equals("tv", StringComparison.InvariantCultureIgnoreCase))
{
if (multiSearch.release_date.HasValue() && DateTime.TryParse(multiSearch.release_date, out var releaseDate))
{
result.Title = $"{multiSearch.name} ({releaseDate.Year})";
}
else
{
result.Title = multiSearch.name;
}
}
if (multiSearch.media_type.Equals("person", StringComparison.InvariantCultureIgnoreCase))
{
result.Title = multiSearch.name;
}
result.Id = multiSearch.id.ToString();
model.Add(result);
}
return model;
}
}
}

@ -2,6 +2,7 @@
{
public class MultiSearchResult
{
public string Id { get; set; }
public string MediaType { get; set; }
public string Title { get; set; }
}

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using AutoMapper;
using Ombi.Api.TheMovieDb.Models;
using Ombi.Core.Models.Search;
@ -101,6 +102,7 @@ namespace Ombi.Mapping.Profiles
.ForMember(x => x.Id, o => o.MapFrom(s => s.id))
.ForMember(x => x.Overview, o => o.MapFrom(s => s.overview))
.ForMember(x => x.PosterPath, o => o.MapFrom(s => s.poster_path))
.ForMember(x => x.ReleaseDate, o => o.MapFrom(s => DateTime.Parse(s.release_date)))
.ForMember(x => x.Title, o => o.MapFrom(s => s.title));
CreateMap<SearchMovieViewModel, MovieCollection>().ReverseMap();

@ -35,25 +35,9 @@
}
export interface IMultiSearchResult {
original_name: string;
id: number;
media_type: string;
name: string;
vote_count: number;
vote_average: number;
poster_path: string;
first_air_date: string;
popularity: number;
genre_ids: number[];
original_language: string;
backdrop_path: string;
overview: string;
origin_country: string[];
video: true;
title: string;
original_title: string;
adult: true;
release_date: string;
id: string;
mediaType: string;
title: string;
}
export interface ILanguageRefine {

@ -4,24 +4,19 @@
<ng-template #template let-result="result">
<div *ngIf="result.media_type === 'movie'">
<div *ngIf="result.mediaType === 'movie'">
<i class="fa fa-film"></i> &nbsp;
<span *ngIf="result.release_date">
{{result.title}} ({{result.release_date.slice(0,4)}})
</span>
<span *ngIf="!result.release_date">{{result.title}}</span>
<span >{{result.title}}</span>
</div>
<div *ngIf="result.media_type === 'tv'">
<div *ngIf="result.mediaType === 'tv'">
<i class="fa fa-tv"></i> &nbsp;
<span *ngIf="result.release_date">
{{result.name}} ({{result.release_date.slice(0,4)}})
</span>
<span *ngIf="!result.release_date">{{result.name}}</span>
<span>{{result.title}}</span>
</div>
<div *ngIf="result.media_type === 'person'">
<div *ngIf="result.mediaType === 'person'">
<i class="fa fa-user"></i> &nbsp;
<span *ngIf="result.name">{{result.name}}</span>
<span >{{result.title}}</span>
</div>
<!-- Collection -->
<!-- <i class="fa fa-file-video-o" aria-hidden="true"></i> -->

@ -15,27 +15,12 @@ import { NgbTypeaheadSelectItemEvent } from '@ng-bootstrap/ng-bootstrap';
export class NavSearchComponent {
public selectedItem: string;
public searching = false;
public searchFailed = false;
public formatter = (result: IMultiSearchResult) => {
if(result.media_type === "movie") {
let title = result.title;
if(result.release_date) {
title += ` (${result.release_date.slice(0,4)})`;
}
return title;
} else if (result.media_type === "tv") {
let title = result.name;
if(result.release_date) {
title += ` (${result.release_date.slice(0,4)})`;
}
return title;
} else if(result.media_type === "person"){
return result.name;
}
return result.title;
}
public searchModel = (text$: Observable<string>) =>
@ -54,13 +39,13 @@ export class NavSearchComponent {
public selected(event: NgbTypeaheadSelectItemEvent) {
if (event.item.media_type == "movie") {
if (event.item.mediaType == "movie") {
this.router.navigate([`details/movie/${event.item.id}`]);
return;
} else if (event.item.media_type == "tv") {
} else if (event.item.mediaType == "tv") {
this.router.navigate([`details/tv/${event.item.id}/true`]);
return;
} else if (event.item.media_type == "person") {
} else if (event.item.mediaType == "person") {
this.router.navigate([`discover/actor/${event.item.id}`]);
return;
}

Loading…
Cancel
Save