using Neo.Afx.Mvc;
using Neo.Afx.Security;
using Neo.LegitimateLicences.LicenceIssueRequest.Models.Database;
using Neo.LegitimateLicences.Common;
using Neo.LegitimateLicences.Common.Helpers;
using Neo.LegitimateLicences.Data.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using Neo.Afx.Common;
namespace Neo.LegitimateLicences.LicenceIssueRequest
{
public partial class LicenceIssueRequestController
{
#region Dashboard
///
/// Return LicenceIssueRequest Dashboard view
///
///
public ActionResult Dashboard()
{
var isNew = WebHelper.ItemID == -1;
var itemId = WebHelper.ItemID;
var model = new LicenceIssueRequestDashboardModel
{
UserSecurables = (Profile.Securables != null) ? Profile.Securables.ToList() : new List()
};
if (!isNew)
{
var licenceIssueDatabase = new LicenceIssueDatabase();
model.LicenceIssueView = licenceIssueDatabase.GetLicenceIssueView(itemId, Profile.UserID);
model.WorkflowInstance = WorkflowHelper.GetWorkflowInstanceView(WebHelper.EntityID, WebHelper.ItemID, Profile.UserID);
model.LicenceIssuingStatusSummary = licenceIssueDatabase.GetLicenceIssuingWorkflowSummary(itemId, Profile.UserID).ToList();
model.Data = new
{
Exceptions = licenceIssueDatabase.GetLicenceExceptions(model.LicenceIssueView.VerifiedLicenceID, Profile.UserID)
};
#region Comments
model.Comments = CommentHelper.GetLatestComments(WebHelper.EntityID, WebHelper.ItemID);
#endregion
}
return View("Dashboard", model);
}
#endregion
#region RecalculateExceptions
///
/// Recalculate Exceptions on licence issue
///
///
///
[HttpPost]
public JsonNetResult RecalculateExceptions(long licenceID)
{
var database = new LegitimateDatabase();
try
{
database.RecalculateLicenceExceptions(licenceID);
}
catch (Exception ex)
{
#region Error Handling
#region Error Additional Data
Dictionary additionalData = new Dictionary();
additionalData.Add("licenceID", licenceID);
#endregion
string error = ErrorHelper.ProcessError(ex, "LicenceIssueRequest", "RecalculateExceptions", additionalData);
#endregion
return new JsonNetResult()
{
Data = new JsonBaseResult()
{
Success = false,
ErrorCode = "ERROR",
Error = error
}
};
}
return new JsonNetResult()
{
Data = new JsonBaseResult()
{
Success = true,
Error = "",
ErrorCode = "",
Result = new {}
}
};
}
#endregion
}
}