using Microsoft.AspNet.Identity.EntityFramework; using Sevomin.Models; using Sevomin.Models.Helpers; using System.IO; using System.Threading.Tasks; using System.Web.Mvc; using System.Linq; namespace Sevomin.WebFrontend.Controllers { [Authorize] public class AuthorizedController : BaseController { public AuthorizedController() : this(new SevominUserManager(new UserStore(SevominDbContext.Current))) { } public AuthorizedController(SevominUserManager userManager) { UserManager = userManager; } public SevominUserManager UserManager { get; private set; } public async Task GetResume(string userid = "", bool english = false) { if (string.IsNullOrWhiteSpace(userid)) userid = (await UserManager.FindByNameAsync(User.Identity.Name)).Id; Dovomin user = await UserManager.FindByIdAsync(userid) as Dovomin; if (user == null) return HttpNotFound(); if (!User.IsInRole("God")) { if (User.IsInRole("Dovomin")) { if (userid != user.Id) { return HttpNotFound(); } else { } } else if (User.IsInRole("Avalin")) { Avalin avalin = (await UserManager.FindByNameAsync(User.Identity.Name)) as Avalin; bool showIt = avalin.Jobs.Any(j => { bool ret = j.Applications.Any(c => c.DovominId == userid); return ret; }); if (!showIt) return HttpNotFound(); } } string path = Path.Combine(Server.MapPath("~/App_Data/resumes/"), english ? user.EnglishResume : user.PersianResume); string fileDownloadName = string.Format("{0} {1} Resume{2}", user.DisplayName, english ? "English" : "Persian", Path.GetExtension(path)); return File(path, "application/octet-stream", fileDownloadName); } } }