using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Mvc.Rendering;
using Yavsc.Models;
using Yavsc.ViewModels.Controls;
using Yavsc.ViewModels.Relationship;
using YavscLib;

namespace Yavsc.ViewComponents
{
    public class CirclesControlViewComponent : ViewComponent
    {
        ApplicationDbContext dbContext;
        public CirclesControlViewComponent(ApplicationDbContext dbContext)
        {
            this.dbContext = dbContext;
        }
        public async Task<IViewComponentResult> InvokeAsync (ICircleAuthorized target)
        {
            var oid = target.GetOwnerId();
            ViewBag.ACL = dbContext.Circle.Where(
                c=>c.OwnerId == oid)
                .Select(
                    c => new SelectListItem  
                    { 
                        Text = c.Name, 
                        Value = c.Id.ToString(), 
                        Selected = target.AuthorizeCircle(c.Id) 
                    } 
                );
                
            ViewBag.Access = dbContext.Circle.Where(
                c=>c.OwnerId == oid)
                .Select( c=>
                    new AjaxCheckBoxInfo
                    {
                        Text = c.Name, 
                        Checked  = target.AuthorizeCircle(c.Id),
                        Value = c.Id.ToString()
                    });
            return View(new CirclesViewModel(target));
        }
    }
}