|
|
|
|
using Microsoft.AspNet.Mvc.Localization;
|
|
|
|
|
using Microsoft.AspNet.Mvc;
|
|
|
|
|
using Microsoft.AspNet.Http.Features;
|
|
|
|
|
using Microsoft.AspNet.Diagnostics;
|
|
|
|
|
using Microsoft.AspNet.Authorization;
|
|
|
|
|
using Microsoft.AspNet.Hosting;
|
|
|
|
|
using Microsoft.AspNet.Identity;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Security.Claims;
|
|
|
|
|
using Microsoft.Data.Entity;
|
|
|
|
|
using Microsoft.AspNet.Http;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace Yavsc.Controllers
|
|
|
|
|
{
|
|
|
|
|
using Models;
|
|
|
|
|
using YavscLib;
|
|
|
|
|
|
|
|
|
|
[AllowAnonymous]
|
|
|
|
|
public class HomeController : Controller
|
|
|
|
|
{
|
|
|
|
|
public IHostingEnvironment Hosting { get; set; }
|
|
|
|
|
|
|
|
|
|
private ApplicationDbContext DbContext;
|
|
|
|
|
|
|
|
|
|
private readonly IHtmlLocalizer _localizer;
|
|
|
|
|
|
|
|
|
|
public HomeController(IHtmlLocalizer<Startup> localizer, IHostingEnvironment hosting,
|
|
|
|
|
ApplicationDbContext context, UserManager<ApplicationUser> userManager)
|
|
|
|
|
{
|
|
|
|
|
_localizer = localizer;
|
|
|
|
|
Hosting = hosting;
|
|
|
|
|
DbContext = context;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<IActionResult> Index(string id)
|
|
|
|
|
{
|
|
|
|
|
ViewBag.IsFromSecureProx = (Request.Headers.ContainsKey(Constants.SshHeaderKey))? Request.Headers[Constants.SshHeaderKey]=="on" : false ;
|
|
|
|
|
ViewBag.SecureHomeUrl = "https://"+Request.Headers["X-Forwarded-Host"];
|
|
|
|
|
ViewBag.SshHeaderKey = Request.Headers[Constants.SshHeaderKey];
|
|
|
|
|
var uid = User.GetUserId();
|
|
|
|
|
long [] clicked=null;
|
|
|
|
|
if (uid==null) {
|
|
|
|
|
await HttpContext.Session.LoadAsync();
|
|
|
|
|
var strclicked = HttpContext.Session.GetString("clicked");
|
|
|
|
|
if (strclicked!=null) clicked = strclicked.Split(':').Select(c=>long.Parse(c)).ToArray();
|
|
|
|
|
if (clicked==null) clicked = new long [0];
|
|
|
|
|
}
|
|
|
|
|
else clicked = DbContext.DimissClicked.Where(d=>d.UserId == uid).Select(d=>d.NotificationId).ToArray();
|
|
|
|
|
var notes = DbContext.Notification.Where(
|
|
|
|
|
n=> !clicked.Any(c=>n.Id==c)
|
|
|
|
|
);
|
|
|
|
|
ViewData["Notify"] = notes;
|
|
|
|
|
ViewData["HasHaircutCommand"] = DbContext.HairCutQueries.Any
|
|
|
|
|
(q=>q.ClientId == uid && q.Status < QueryStatus.Failed);
|
|
|
|
|
|
|
|
|
|
if (id==null) {
|
|
|
|
|
// Workaround
|
|
|
|
|
// NotImplementedException: Remotion.Linq.Clauses.ResultOperators.ConcatResultOperator
|
|
|
|
|
//
|
|
|
|
|
// Use Concat()| whatever to do left outer join on ToArray() or ToList(), not on IQueryable
|
|
|
|
|
|
|
|
|
|
var legacy = DbContext.Activities
|
|
|
|
|
.Include(a=>a.Forms).Include(a=>a.Children)
|
|
|
|
|
.Where(a=> !a.Hidden)
|
|
|
|
|
.Where(a=> a.ParentCode==null).ToArray();
|
|
|
|
|
// OMG
|
|
|
|
|
var hiddenchildren = DbContext.Activities
|
|
|
|
|
.Include(a=>a.Forms).Include(a=>a.Children)
|
|
|
|
|
.Where(a=> a.Parent.Hidden && !a.Hidden).ToArray();
|
|
|
|
|
|
|
|
|
|
return View(legacy.Concat(hiddenchildren).OrderByDescending(a=>a.Rate));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
return View(DbContext.Activities
|
|
|
|
|
.Include(a=>a.Forms).Include(a=>a.Children)
|
|
|
|
|
.Where(a=>!a.Hidden)
|
|
|
|
|
.Where(a=> a.ParentCode==id).OrderByDescending(a=>a.Rate));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public IActionResult About()
|
|
|
|
|
{
|
|
|
|
|
return View();
|
|
|
|
|
}
|
|
|
|
|
public IActionResult AboutMarkdown()
|
|
|
|
|
{
|
|
|
|
|
return View();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IActionResult Contact()
|
|
|
|
|
{
|
|
|
|
|
return View();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ActionResult Chat()
|
|
|
|
|
{
|
|
|
|
|
if (User.Identity.IsAuthenticated) {
|
|
|
|
|
ViewBag.IsAuthenticated=true;
|
|
|
|
|
string uid = User.GetUserId();
|
|
|
|
|
ViewBag.Contacts = DbContext.Contacts.Where(c=>c.OwnerId == uid)
|
|
|
|
|
;
|
|
|
|
|
} else ViewBag.IsAuthenticated=false;
|
|
|
|
|
return View();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IActionResult Error()
|
|
|
|
|
{
|
|
|
|
|
var feature = this.HttpContext.Features.Get<IExceptionHandlerFeature>();
|
|
|
|
|
|
|
|
|
|
return View("~/Views/Shared/Error.cshtml", feature?.Error);
|
|
|
|
|
}
|
|
|
|
|
public IActionResult Status(int id)
|
|
|
|
|
{
|
|
|
|
|
ViewBag.StatusCode = id;
|
|
|
|
|
return View("~/Views/Shared/Status.cshtml");
|
|
|
|
|
}
|
|
|
|
|
public IActionResult Todo()
|
|
|
|
|
{
|
|
|
|
|
return View();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|