public ActionResult HistoryDetails(int id)
 {
     if ((userContext.IsProvider() && Permission.HasPermission(false, true, Permission.PermissionName.CanBulkUploadProviderFiles)) ||
         (userContext.IsOrganisation() && Permission.HasPermission(false, true, Permission.PermissionName.CanBulkUploadOrganisationFiles)))
     {
         var model = new BulkUploadHistoryDetailViewModel();
         model.Populate(userContext, db, id);
         if (model.AccessDenied)
         {
             return(HttpNotFound());
         }
         return(View(model));
     }
     return(Redirect());
 }
        public ActionResult ConfirmUpload(BulkUploadHistoryDetailViewModel bulkModel)
        {
            if ((userContext.IsProvider() && Permission.HasPermission(false, true, Permission.PermissionName.CanBulkUploadProviderFiles)) ||
                (userContext.IsOrganisation() && Permission.HasPermission(false, true, Permission.PermissionName.CanBulkUploadOrganisationFiles)))
            {
                var history = db.BulkUploads.FirstOrDefault(b => b.BulkUploadId.Equals(bulkModel.BulkUploadId));
                if (history == null)
                {
                    return(HttpNotFound());
                }

                if (userContext.ItemId.HasValue)
                {
                    if ((userContext.IsOrganisation() && history.UserOrganisationId != userContext.ItemId) ||
                        (userContext.IsProvider() && history.UserProviderId != userContext.ItemId))
                    {
                        return(HttpNotFound());
                    }
                }
                else
                {
                    return(HttpNotFound());
                }

                // Check that the status is currently at "Needs Confirmation"
                if (history
                    .BulkUploadStatusHistories
                    .OrderByDescending(x => x.CreatedDateTimeUtc)
                    .First()
                    .BulkUploadStatusId != (Int32)Constants.BulkUploadStatus.Needs_Confirmation)
                {
                    return(HttpNotFound());
                }

                var model = new BulkUploadViewModel
                {
                    Summary = new UploadSummary
                    {
                        TargetFileUrl = history.FilePath,
                        FileName      = history.FileName
                    },
                    OverrideException = true
                };

                /*
                 * Matt - dev note
                 * ---------------------
                 * This section relates to replacing the in-application BulkUpload
                 * with a more efficient out-of-application service based system.
                 *
                 */
                try
                {
                    var bulkUploadService = new BulkUploadWCFServiceClient();
                    var parameters        = new ConfirmParameters
                    {
                        BulkUploadId = bulkModel.BulkUploadId,
                        UserId       =
                            history
                            .BulkUploadStatusHistories
                            .OrderByDescending(x => x.CreatedDateTimeUtc)
                            .First()
                            .AspNetUser
                            .Id
                    };
                    bulkUploadService.Confirm(parameters);
                }
                catch (FaultException <BulkUploadFault> ex)
                {
                    model.Message = String.Format("The bulk upload service reported an error: {0}", ex.Detail.Message);
                }

                /*
                 * end
                 */

                //model.InitiateBulkUpload(userContext, db);
                string viewName;
                if (history.FileContentType != null && history.FileContentType == (int)Constants.FileContentType.ApprenticeshipData)
                {
                    viewName = "PostApprenticeshipUpload";
                }
                else
                {
                    viewName = "PostCourseUpload";
                }

                //   var viewName = (bulkModel.FileContentType == Constants.FileContentType.CourseData ? "PostCourseUpload" : "PostApprenticeshipUpload");

                return(View(viewName, model));
            }
            return(Redirect());
        }