using System.Linq;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Mvc.Rendering;

namespace Yavsc.ViewComponents
{
    using Models;
    using ViewModels.Controls;
    using ViewModels.Relationship;
    using Yavsc.Abstract.Identity.Security;

    public class CirclesControlViewComponent : ViewComponent
    {
        ApplicationDbContext dbContext;
        public CirclesControlViewComponent(ApplicationDbContext dbContext)
        {
            this.dbContext = dbContext;
        }


        public IViewComponentResult Invoke (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));
        }
    }
}
