1+ // Copyright (c) .NET Foundation. All rights reserved.
2+ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
4+ using System ;
5+ using System . Threading . Tasks ;
6+ using System . Web . Mvc ;
7+ using NuGet . Services . Messaging . Email ;
8+
9+ namespace NuGetGallery . Controllers
10+ {
11+ public class ExperimentsController : AppController
12+ {
13+ private readonly ISearchSideBySideService _searchSideBySideService ;
14+ private readonly IFeatureFlagService _featureFlagService ;
15+
16+ public ExperimentsController (
17+ ISearchSideBySideService searchSideBySideService ,
18+ IFeatureFlagService featureFlagService )
19+ {
20+ _searchSideBySideService = searchSideBySideService ?? throw new ArgumentNullException ( nameof ( searchSideBySideService ) ) ;
21+ _featureFlagService = featureFlagService ?? throw new ArgumentNullException ( nameof ( featureFlagService ) ) ;
22+ }
23+
24+ [ HttpGet ]
25+ public async Task < ActionResult > SearchSideBySide ( string q = null )
26+ {
27+ var currentUser = GetCurrentUser ( ) ;
28+ if ( ! _featureFlagService . IsSearchSideBySideEnabled ( currentUser ) )
29+ {
30+ return new HttpNotFoundResult ( ) ;
31+ }
32+
33+ var viewModel = await _searchSideBySideService . SearchAsync ( q , currentUser ) ;
34+
35+ return View ( viewModel ) ;
36+ }
37+
38+ [ HttpPost ]
39+ [ ValidateAntiForgeryToken ]
40+ public async Task < ActionResult > SearchSideBySide ( SearchSideBySideViewModel input )
41+ {
42+ var currentUser = GetCurrentUser ( ) ;
43+ if ( ! _featureFlagService . IsSearchSideBySideEnabled ( currentUser ) )
44+ {
45+ return new HttpNotFoundResult ( ) ;
46+ }
47+
48+ var searchUrl = Url . SearchSideBySide ( searchTerm : input . SearchTerm ? . Trim ( ) , relativeUrl : false ) ;
49+ await _searchSideBySideService . RecordFeedbackAsync ( input , searchUrl ) ;
50+
51+ TempData [ "Message" ] = "Thank you for providing feedback! Feel free to try some other queries." ;
52+
53+ return RedirectToAction ( nameof ( SearchSideBySide ) ) ;
54+ }
55+ }
56+ }
0 commit comments