using System; using Neo.Afx.Mvc; using System.Web.Mvc; using Neo.LegitimateLicences.Data.Models; using System.Linq; using Neo.Afx.Services.Workflows.Entities; using Neo.LegitimateLicences.Common; using Neo.Afx.Security; using System.Configuration; using Neo.Afx.Services.Workflows; using Neo.Afx.Services.Documents; using Neo.Afx.Services.Documents.Entities; using System.Collections.Generic; using Neo.LegitimateLicences.ApplicationRequest.Models.Database; namespace Neo.LegitimateLicences.VerificationConsole { public partial class VerificationConsoleController : Neo.LegitimateLicences.Common.ControllerBase { #region FinaliseVerification public ActionResult FinaliseVerification(long entityID, long itemID, long workflowInstanceTaskID) { var model = new FinaliseVerificationModel() { UserID = Profile.UserID, UserRoles = Profile.Roles, ItemID = itemID, WorkflowInstanceTaskID = workflowInstanceTaskID }; //todo - handle request correction and task error... var workflowDb = new WorkflowsDatabase(); var documentDatabase = new DocumentsDatabase(); var prevouisWorkflowInstanceTask = new WorkflowInstanceTask(); String requestCorrectionMessage = ""; #region Check if failed check var workflowInstanceTask = workflowDb.GetWorkflowInstanceTaskView(workflowInstanceTaskID); var workflowInstance = workflowDb.GetWorkflowInstance(workflowInstanceTask.WorkflowInstanceID, Profile.UserID); var failedVerfication = false; var submitToNextStepChecks = workflowDb.PerformCanSubmitToNextStepChecks(workflowInstanceTask.WorkflowInstanceID, workflowInstanceTask.WorkflowInstanceTaskID, Profile.UserID); #region Check if any checks failed if (submitToNextStepChecks.Any(o => !o.IsSuccessfull && o.RequiredForSubmitting)) { failedVerfication = true; } #endregion #endregion #region Complete Task if (failedVerfication) { var workflowTemplate = workflowDb.GetWorkflowTemplate(workflowInstance.WorkflowTemplateID, Profile.UserID); var defaultStep = workflowTemplate.WorkflowTemplateSteps.Where(a => a.IsDefaultStep).FirstOrDefault(); var error = workflowDb.SubmitWorkflowTaskAction(workflowInstanceTaskID, 5 /*Request Correction*/, Profile.UserName, defaultStep.WorkflowTemplateStepID, "Verification Failed"); #region Calculate Request Correction String prevouisWorkflowInstanceTask = workflowInstance.WorkflowInstanceTasks.Where(a => a.WorkflowTemplateStepID == defaultStep.WorkflowTemplateStepID && a.WorkflowInstanceTaskStatusID == (short)WorkflowInstanceTaskStatusEnum.Completed).OrderByDescending(o => o.DateCompleted).FirstOrDefault(); requestCorrectionMessage = "One or more documents failed verification. The application was sent back to "+ prevouisWorkflowInstanceTask.CompletedBy.KnownAs+ " for correction."; model.RequestCorrectionMessage = requestCorrectionMessage; #endregion } else { var error = workflowDb.SubmitWorkflowTaskAction(workflowInstanceTaskID, 4 /*Completed*/, Profile.UserName, -1, ""); } #endregion model.VerficationFailed = failedVerfication; return View("FinaliseVerification", model); } #endregion ////#region SaveDocumentChecks ////[HttpPost] ////public JsonResult SaveDocumentChecks(long entityID, long itemID, long workflowInstanceTaskID, List documentQuestions, string comments) ////{ //// var database = new LegitimateDatabase(); //// var documentDatabase = new DocumentsDatabase(); //// var errorMessage = ""; //// var success = false; //// var at = WorkflowHelper.GetActiveTask(entityID, itemID); //// if (at.WorkflowInstanceTaskID == workflowInstanceTaskID) //// { //// documentDatabase.UpdateDocumentQuestions(documentQuestions, Profile.UserID); //// success = true; //// } //// else //// { //// success = false; //// errorMessage = "The given task is not active any more."; //// } //// var results = new //// { //// Success = success, //// ErrorMessage = errorMessage //// }; //// return Json(results, JsonSerializerOptions.None); ////} ////#endregion } }