using Neo.Afx.ComponentModel;
using Neo.Afx.Mvc;
using Neo.Afx.Security;
using Neo.Afx.Services.Integration;
using Neo.Afx.Services.Notifications.Entities;
using Neo.Afx.Services.Workflows.Entities;
using Neo.Afx.ViewModels;
using Neo.LegitimateLicences.ApplicationRequest.Models.Database;
using Neo.LegitimateLicences.Common;
using Neo.LegitimateLicences.Common.Helpers;
using Neo.LegitimateLicences.Data.Models;
using Neo.LegitimateLicences.Logic.Helpers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Neo.LegitimateLicences.ApplicationRequest
{
public partial class ApplicationRequestController
{
#region Form
///
/// Return Application Request Form
///
///
public ActionResult Form()
{
var itemId = WebHelper.ItemID;
var taskId = WebHelper.TaskID;
#region Get active user task
Vw_WorkflowInstanceTask activeUserTask = null;
if (taskId != -1)
{
activeUserTask = WorkflowHelper.GetActiveUserUserTaskByID((long)EntityEnum.ApplicationRequestDetails, itemId, taskId, Profile.UserID);
}
if (activeUserTask == null)
{
activeUserTask = WorkflowHelper.GetActiveUserTask(Profile.UserID, EntityEnum.ApplicationRequestDetails, itemId);
}
#endregion
var model = new ApplicationRequestFormModel
{
UserSecurables = (Profile.Securables != null) ? Profile.Securables.ToList() : new List(),
Ui = new WorkflowConsoleUIProperties() {
canSave = (activeUserTask != null && (activeUserTask.WorkflowTemplateStepNumber == 1 || activeUserTask.WorkflowTemplateStepNumber == 3))
}
};
var applicationDatabase = new ApplicationDatabase();
var database = new LegitimateDatabase();
var application = applicationDatabase.GetApplicationForm(itemId, Profile.UserID);
var applicationView = applicationDatabase.GetApplicationView(itemId, Profile.UserID);
#region Check for related TAT Request
if (application.RelatedTATApplicationRequestID != null)
{
model.RelatedTATApplicationDetails = applicationDatabase.GetApplicationTATDetails(application.RelatedTATApplicationRequestID.Value, Profile.UserID);
}
else
{
model.RelatedTATApplicationDetails = new ApplicationDetail();
}
#endregion
#region Get Form Data
model.Data = application;
model.Lookups = GetLookupsForFormGetLookupsFormView();
model.WorkflowInstance = WorkflowHelper.GetWorkflowInstanceView(WebHelper.EntityID, WebHelper.ItemID, Profile.UserID);
model.ApplicationView = applicationView;
if (model.ApplicationView.CopiedFromApplicationDetailID != null)
{
model.ParentApplicationView = Database.GetApplicationView(model.ApplicationView.CopiedFromApplicationDetailID.Value, Profile.UserID);
}
else
{
model.ParentApplicationView = new Neo.LegitimateLicences.ApplicationRequest.Models.Database.Vw_ApplicationDetails_Light();
}
model.SetFormEditState(activeUserTask);
model.OfficeLocationDocumentTemplates = database.GetOfficeLocationSetupDocumentTemplate(Profile.OfficeLocationID.Value);
#endregion
#region Populate Viewbag
ViewBag.ApplicationRequestTypeID = application.ApplicationRequestTypeID;
ViewBag.IsBulkApplication = application.IsBulkApplication;
ViewBag.IsLtpsConversion = application.IsLtpsConversion;
ViewBag.IsReadOnly = ((Vw_WorkflowInstance)model.WorkflowInstance).WorkflowInstanceStatusID == (short)WorkflowInstanceStatusEnum.Completed;
#endregion
return View("Form", model);
}
#endregion
#region GetLookupsForFormGetLookupsFormView
///
/// Get Lookup list
///
///
public List GetLookupsForFormGetLookupsFormView()
{
var lookups = new List();
var integrationStore = new SqlIntegrationStore();
try
{
UserProfileHelper userProfileHelper = new UserProfileHelper(Profile.UserID, Profile.OfficeLocationID);
var officeLocation = userProfileHelper.OfficeLocation;
integrationStore.Open();
lookups.Add(new LookupList("NewOLIDTypes", integrationStore.GetDataEntities("IDTypes", string.Empty).OrderBy(a => a.Title)));
lookups.Add(new LookupList("NewOLIDTypesIndividual", integrationStore.GetDataEntities("IDTypes", "IndvidualTypesOnly=1").OrderBy(a => a.Title)));
lookups.Add(new LookupList("NewOLModes", integrationStore.GetDataEntities("Modes", string.Empty).OrderBy(a => a.Title)));
lookups.Add(new LookupList("NewOLServiceTypes", integrationStore.GetDataEntities("ServiceTypesDivision", string.Empty).Where(x => x.Properties["divisiontypeid"] == officeLocation.DivisionTypeID.ToString() && x.Properties["provinceid"] == officeLocation.ProvinceID.ToString()).OrderBy(a => a.Title)));
lookups.Add(new LookupList("NewOLContractTypes", integrationStore.GetDataEntities("ContractTypes", string.Empty).OrderBy(a => a.Title)));
lookups.Add(new LookupList("NewOLPaymentTypes", integrationStore.GetDataEntities("PaymentTypes", string.Empty).OrderBy(a => a.Title)));
lookups.Add(new LookupList("NewOLVehicleTypes", integrationStore.GetDataEntities("VehicleTypes", string.Empty).OrderBy(a => a.Title)));
lookups.Add(new LookupList("NewOLBusinessTypes", integrationStore.GetDataEntities("BusinessTypes", string.Empty).OrderBy(a => a.Title)));
lookups.Add(new LookupList("NewOLCarryingCapacities", integrationStore.GetDataEntities("CarryingCapacities", string.Empty)));
lookups.Add(new LookupList("AdjudicationDecisions", integrationStore.GetDataEntities("Decisions", string.Empty).OrderBy(a => a.Title)));
lookups.Add(new LookupList("LicenceDurations", integrationStore.GetDataEntities("LicenceDurations", string.Empty)));
lookups.Add(new LookupList("Regions", integrationStore.GetDataEntities("Regions", string.Empty).OrderBy(a => a.Title)));
lookups.Add(new LookupList("Provinces", integrationStore.GetDataEntities("Provinces", string.Empty).Where(x => x.Key != "10").OrderBy(a => a.Title))); // Exclude National
}
finally
{
integrationStore.Close();
}
return lookups;
}
#endregion
#region GetModel
///
/// Get ApplicationRequestFormModel
///
///
public ApplicationRequestFormModel GetModel()
{
#region Check if can save
var itemId = WebHelper.ItemID;
var taskId = WebHelper.TaskID;
Vw_WorkflowInstanceTask activeUserTask = null;
if (taskId != -1)
{
activeUserTask = WorkflowHelper.GetActiveUserUserTaskByID((long)EntityEnum.ApplicationRequestDetails, itemId, taskId, Profile.UserID);
}
if (activeUserTask == null)
{
activeUserTask = WorkflowHelper.GetActiveUserTask(Profile.UserID, EntityEnum.ApplicationRequestDetails, itemId);
}
var model = new ApplicationRequestFormModel
{
UserSecurables = (Profile.Securables != null) ? Profile.Securables.ToList() : new List(),
Ui = new WorkflowConsoleUIProperties()
{
canSave = (activeUserTask != null && (activeUserTask.WorkflowTemplateStepNumber == 1 || activeUserTask.WorkflowTemplateStepNumber == 3)),
canSubmit = (activeUserTask != null && activeUserTask.WorkflowTemplateStepTypeID == (short)WorkflowTemplateStepTypeEnum.DataCapture)
}
};
var applicationDatabase = new ApplicationDatabase();
var application = applicationDatabase.GetApplicationForm(itemId, Profile.UserID);
var applicationView = applicationDatabase.GetApplicationView(itemId, Profile.UserID);
model.Data = application;
model.WorkflowInstance = WorkflowHelper.GetWorkflowInstanceView(WebHelper.EntityID, WebHelper.ItemID, Profile.UserID);
model.ApplicationView = applicationView;
if (model.ApplicationView.CopiedFromApplicationDetailID != null)
{
model.ParentApplicationView = Database.GetApplicationView(model.ApplicationView.CopiedFromApplicationDetailID.Value, Profile.UserID);
}
else
{
model.ParentApplicationView = new Neo.LegitimateLicences.ApplicationRequest.Models.Database.Vw_ApplicationDetails_Light();
}
model.SetFormEditState(activeUserTask);
#endregion
return model;
}
#endregion
}
}