using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using EnVisage.Code;
using EnVisage.Code.BLL;
using EnVisage.Models;
using EnVisage.Models.ProjectDependencies;
using jQuery.DataTables.Mvc;
using EnVisage.App_Start;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.IO;
using FileHelpers;
using System.Web.Script.Serialization;
using EnVisage.Code.Cache;
using EnVisage.Code.Validation;
using System.Text;
using System.Threading.Tasks;
using Kendo.Mvc.UI;
using Prevu.Core.Main;
namespace EnVisage.Controllers
{
[Authorize]
public class ProjectController : BaseController
{
#region Private Members
private ProjectManager ProjectManager { get; }
private IUserManager UserManager { get; }
#endregion
#region Contructors
public ProjectController(ProjectManager projectManager, IUserManager userManager)
{
ProjectManager = projectManager;
UserManager = userManager;
}
#endregion
#region Actions
///
/// GET: /Project/
///
/// Empty view
[HttpGet]
[AreaSecurity(area = Areas.Projects, level = AccessLevel.Read)]
public ActionResult Index()
{
if (!SecurityManager.CheckSecurityObjectPermission(Areas.Projects, AccessLevel.Read))
return Redirect("/");
return View();
}
///
/// GET: /Project/
///
/// Empty view
[HttpGet]
[AreaSecurity(area = Areas.Projects, level = AccessLevel.Read)]
public ActionResult Index2()
{
return View("MyProjectsList");
}
public ActionResult MyProjectsList([DataSourceRequest]Kendo.Mvc.UI.DataSourceRequest request)
{
Guid userId = Guid.Parse(HttpContext.User.Identity.GetUserId());
int totalRecordCount;
int searchRecordCount;
var projects = new ProjectManager(DbContext).GetProjects4User(userId, false, null, 1, 100000000, "", out totalRecordCount, out searchRecordCount)
.Where(x => IsPart(x.Id) == false)
.Select(x => new
{
x.ProjectName,
ScenarioName = x.ActiveScenario != null ? x.ActiveScenario.Name : "",
ScenarioId = x.ActiveScenario?.Id ?? Guid.Empty,
x.Status,
Number = x.ProjectNumber,
x.Priority,
x.Classification,
x.Teams,
DeadLine = x.Deadline,
x.Client,
x.Id,
isPart = true,
Parts = x.ProjectParts.Select(z => new
{
z.ProjectName,
ScenarioName = z.ActiveScenario != null ? z.ActiveScenario.Name : "",
ScenarioId = z.ActiveScenario?.Id ?? Guid.Empty,
z.Status,
Number = z.ProjectNumber,
z.Priority,
z.Classification,
z.Teams,
DeadLine = z.Deadline,
z.Client,
z.Id
})
}).ToList();
return Json(projects, JsonRequestBehavior.AllowGet);
}
public ActionResult MyProjectPartList(Guid ParentId, [DataSourceRequest]Kendo.Mvc.UI.DataSourceRequest request)
{
var projects = this.DbContext.Projects.Where(x => x.ParentProjectId == ParentId).ToList().Select(x => new
{
ProjectName = x.Name,
ProjectParentId = x.ParentProjectId ?? Guid.Empty,
ProjectParentName = x.ParentProject.Name,
Status = x.Status.Name,
Number = x.ProjectNumber,
x.Priority,
Classification = x.Type.Name,
Teams = GetTeamNames(x.Id),
DeadLine = x.Deadline,
Client = x.Client.Name,
ScenarioName = GetActiveScenarioName(x.Id),
ScenarioId = GetActiveScenarioId(x.Id),
x.Id
}).Where(x => x.ProjectParentId == ParentId).ToList();
return Json(projects, JsonRequestBehavior.AllowGet);
}
[HttpPost]
[AreaSecurity(area = Areas.Projects, level = AccessLevel.Read)]
public ActionResult GetScenariosForProject(Guid ProjectId)
{
List