private void TransformProviderSection(CsvWriter csvWriter, Provider provider)
        {
            if (_userContext.IsOrganisation())
            {
                csvWriter.WriteField <string>("ProviderId");
                csvWriter.WriteField <string>(provider.ProviderId.ToString());
                csvWriter.NextRecord();
            }

            csvWriter.WriteField <string>("Providers");
            csvWriter.NextRecord();

            csvWriter.WriteField <string>("PROVIDER_NAME");
            csvWriter.WriteField <string>("PROVIDER_ALIAS");
            csvWriter.WriteField <string>("ADMIN_ADDRESS_1");
            csvWriter.WriteField <string>("ADMIN_ADDRESS_2");
            csvWriter.WriteField <string>("ADMIN_TOWN");
            csvWriter.WriteField <string>("ADMIN_COUNTY");
            csvWriter.WriteField <string>("ADMIN_POSTCODE");
            csvWriter.WriteField <string>("ADMIN_EMAIL");
            csvWriter.WriteField <string>("ADMIN_WEBSITE");
            csvWriter.WriteField <string>("ADMIN_PHONE");
            csvWriter.WriteField <string>("ADMIN_FAX");

            //The Marketing Information field appears in the Apprentceships file but not the Courses file
            if (_dataType == Constants.BulkUpload_DataType.ApprenticeshipData)
            {
                csvWriter.WriteField <string>("GENERIC_APPRENTICESHIP_INFO*");
            }

            csvWriter.NextRecord();

            csvWriter.WriteField <string>(provider.ProviderName);
            csvWriter.WriteField <string>(provider.ProviderNameAlias);
            csvWriter.WriteField <string>(provider.Address == null ? string.Empty : provider.Address.AddressLine1);
            csvWriter.WriteField <string>(provider.Address == null ? string.Empty : provider.Address.AddressLine2);
            csvWriter.WriteField <string>(provider.Address == null ? string.Empty : provider.Address.Town);
            csvWriter.WriteField <string>(provider.Address == null ? string.Empty : provider.Address.County);
            csvWriter.WriteField <string>(provider.Address == null ? string.Empty : provider.Address.Postcode);
            csvWriter.WriteField <string>(provider.Email);
            csvWriter.WriteField <string>(provider.Website);
            csvWriter.WriteField <string>(provider.Telephone);
            csvWriter.WriteField <string>(provider.Fax);

            //The Marketing Information field appears in the Apprentceships file but not the Courses file
            if (_dataType == Constants.BulkUpload_DataType.ApprenticeshipData)
            {
                csvWriter.WriteField <string>(provider.MarketingInformation);
            }

            csvWriter.NextRecord();
        }
        public static void Populate(this BulkUploadViewModel model, UserContext.UserContextInfo userContext, ProviderPortalEntities db, Constants.BulkUpload_DataType dataType)
        {
            var providers = LoadProviders(userContext, db, true, userContext.IsOrganisation());

            model.UserCntxName = userContext.ContextName;

            if (userContext.IsProvider())
            {
                model.ProviderViewModel = LoadProviderInformation(providers.FirstOrDefault(), dataType);
            }
            else if (userContext.IsOrganisation())
            {
                model.OrganisationViewModel = LoadOrganisationProviderInfo(providers, dataType);
            }
        }
        public static BulkUploadHistoryViewModel GetHistoryFileUrl(this List <BulkUploadHistoryViewModel> model, UserContext.UserContextInfo userContext, ProviderPortalEntities db, int bulkUploadId)
        {
            var url = (from bulk in db.BulkUploads
                       where bulk.BulkUploadId == bulkUploadId
                       select bulk).FirstOrDefault();


            if ((userContext.IsOrganisation() && url.UserOrganisationId != userContext.ItemId.Value) ||
                (userContext.IsProvider() && url.UserProviderId != userContext.ItemId.Value))
            {
                return(null);
            }

            BulkUploadHistoryViewModel filteredModel = null;

            if (url != null)
            {
                filteredModel = new BulkUploadHistoryViewModel
                {
                    FileName    = url.FileName,
                    DownloadUrl = url.FilePath
                };
            }

            return(filteredModel);
        }
        public static string GetCsvFileName(this BulkUploadViewModel model, UserContext.UserContextInfo userContext, ProviderPortalEntities db, Constants.BulkUpload_DataType dataType)
        {
            var providerOrOrganisationName = userContext.IsOrganisation()
                           ? db.Organisations.Where(o => o.OrganisationId.Equals(userContext.ItemId.Value)).Select(o => o.OrganisationName).FirstOrDefault()
                           : db.Providers.Where(p => p.ProviderId.Equals(userContext.ItemId.Value)).Select(p => p.ProviderName).FirstOrDefault();

            var dataTypeName = (dataType == Constants.BulkUpload_DataType.CourseData ? "Courses" : "Apprenticeships");

            return(string.Format("{0}_{1}.{2}", providerOrOrganisationName, dataTypeName, Constants.BulkDownloadFileExtension));
        }
Example #5
0
        public static List <int> GetPermittedBulkUploadProviders(ProviderPortalEntities db, UserContext.UserContextInfo userContext, Constants.BulkUpload_DataType dataType)
        {
            var permittedBulkUploadProviders = new List <int>();

            var providerPermission     = (dataType == Constants.BulkUpload_DataType.CourseData ? Permission.PermissionName.CanBulkUploadProviderFiles : Permission.PermissionName.CanBulkUploadProviderApprenticeshipFiles);
            var organisationPermission = (dataType == Constants.BulkUpload_DataType.CourseData ? Permission.PermissionName.CanBulkUploadOrganisationFiles : Permission.PermissionName.CanBulkUploadOrganisationApprenticeshipFiles);

            if (userContext.IsProvider() && Permission.HasPermission(false, true, providerPermission))
            {
                permittedBulkUploadProviders.Add(userContext.ItemId.Value);
            }
            else if (userContext.IsOrganisation() && Permission.HasPermission(false, true, organisationPermission))
            {
                permittedBulkUploadProviders =
                    db.OrganisationProviders.Where(
                        o =>
                        o.OrganisationId.Equals(userContext.ItemId.Value) &&
                        o.CanOrganisationEditProvider &&
                        o.IsAccepted && !o.IsRejected)
                    .Select(o => o.ProviderId).ToList();
            }

            return(permittedBulkUploadProviders);
        }
        public static void Populate(this List <BulkUploadHistoryViewModel> model, UserContext.UserContextInfo userContext, ProviderPortalEntities db, Constants.BulkUpload_DataType dataType)
        {
            try
            {
                //IQueryable<BulkUploadHistory> historyRecords;
                IQueryable <BulkUpload> historyRecords;

                if (userContext.IsOrganisation())
                {
                    //all providerswhich belongs to the organsiation
                    var providersToSearch = BulkUploadValidateExtension.GetPermittedBulkUploadProviders(db, userContext, dataType);

                    //get history of all the provider which belongs to organisation + organisation's respective upload

                    /*
                     * historyRecords =
                     *  db.BulkUploadHistories.Include("BulkUploadHistoryProviders.Provider")
                     *      .Where(
                     *          x =>
                     *          providersToSearch.Contains(x.UserProviderId.Value)
                     || x.UserOrganisationId == userContext.ItemId);
                     */

                    historyRecords =
                        db.BulkUploads
                        .Include("BulkUploadProviders.Provider")
                        .Where(x =>
                               (providersToSearch.Contains(x.UserProviderId.Value) || x.UserOrganisationId == userContext.ItemId)
                               &&
                               (x.FileContentType == null || x.FileContentType == (int)dataType));
                }
                else
                {
                    /*
                     * historyRecords =
                     *  db.BulkUploadHistories.Include("BulkUploadHistoryProviders.Provider")
                     *      .Where(
                     *          x =>
                     *          x.UserProviderId.HasValue && x.UserProviderId == userContext.ItemId
                     || x.BulkUploadHistoryProviders.Any(p => p.ProviderId == userContext.ItemId));
                     */

                    historyRecords =
                        db.BulkUploads
                        .Include("BulkUploadProviders.Provider")
                        .Where(x =>
                               (x.UserProviderId.HasValue && x.UserProviderId == userContext.ItemId || x.BulkUploadProviders.Any(p => p.ProviderId == userContext.ItemId))
                               &&
                               (x.FileContentType == null || x.FileContentType == (int)dataType));
                }

                foreach (var historyRecord in historyRecords.OrderByDescending(x => x.BulkUploadId))
                {
                    var currentStatus =
                        historyRecord.BulkUploadStatusHistories.OrderByDescending(x => x.CreatedDateTimeUtc)
                        .FirstOrDefault();
                    if (currentStatus == null)
                    {
                        continue;
                    }
                    var item = new BulkUploadHistoryViewModel
                    {
                        BulkUploadId                  = historyRecord.BulkUploadId,
                        FileName                      = historyRecord.FileName,
                        DownloadUrl                   = historyRecord.FilePath,
                        IsOrganisationUpload          = userContext.IsOrganisation(),
                        ProviderName                  = LoadProviderName(historyRecord),
                        IsAuthorisedToViewAndDownload = userContext.IsOrganisation()
                            ? historyRecord.UserOrganisationId == userContext.ItemId
                            : historyRecord.UserProviderId == userContext.ItemId,
                        UserName            = currentStatus.AspNetUser.Name,
                        UploadedDateTime    = currentStatus.CreatedDateTimeUtc.ToLocalTime(),
                        StatusDescription   = currentStatus.BulkUploadStatu.BulkUploadStatusText,
                        IsDownloadAvailable =
                            !string.IsNullOrEmpty(historyRecord.FilePath) && File.Exists(historyRecord.FilePath),
                        IsUploadSuccessful =
                            currentStatus.BulkUploadStatusId.Equals((int)Constants.BulkUploadStatus.Published),
                    };

                    if (historyRecord.FileContentType != null)
                    {
                        item.FileContentType = (Constants.FileContentType)Enum.Parse(typeof(Constants.FileContentType), historyRecord.FileContentType.ToString());
                    }

                    model.Add(item);
                }
            }
            catch (Exception ex)
            {
                AppGlobal.Log.WriteLog(string.Concat(ex.Message, "-", ex.StackTrace));
            }
        }
        public static void Populate(this BulkUploadHistoryDetailViewModel model, UserContext.UserContextInfo userContext, ProviderPortalEntities db, int bulkUploadId)
        {
            var history = (from bulk in db.BulkUploads
                           where bulk.BulkUploadId == bulkUploadId
                           select bulk).FirstOrDefault();

            if (history == null)
            {
                model.AccessDenied = true;
                return;
            }
            if ((userContext.IsOrganisation() && history.UserOrganisationId != userContext.ItemId.Value) ||
                (userContext.IsProvider() && history.UserProviderId != userContext.ItemId.Value))
            {
                model.AccessDenied = true;
                return;
            }

            var currentStatus = history.BulkUploadStatusHistories.OrderByDescending(x => x.CreatedDateTimeUtc).FirstOrDefault();

            if (currentStatus == null)
            {
                model.AccessDenied = true;
                return;
            }

            model.BulkUploadId = bulkUploadId;

            model.FileName = history.FileName;

            if (history.FileContentType != null)
            {
                model.FileContentType = (Constants.FileContentType)Enum.Parse(typeof(Constants.FileContentType), history.FileContentType.ToString());
            }

            model.UserName = db.AspNetUsers.FirstOrDefault(x => x.Id.ToString() == currentStatus.LoggedInUserId).Name;

            model.UploadedDateTime = currentStatus.CreatedDateTimeUtc.ToLocalTime().ToString(Constants.ConfigSettings.ShortDateTimeFormat);

            model.UploadStatusText = currentStatus.BulkUploadStatu.BulkUploadStatusText;

            model.ExistingCourseCount = history.ExistingCourses ?? 0;

            model.TotalCourseCount = history.NewCourses ?? 0;

            model.InvalidCourseCount = history.InvalidCourses ?? 0;

            model.ExistingVenueCount = history.ExistingVenues ?? 0;

            model.TotalVenueCount = history.NewVenues ?? 0;

            model.InvalidVenueCount = history.InvalidVenues ?? 0;

            model.ExistingOpportunityCount = history.ExistingOpportunities ?? 0;

            model.TotalOpportunityCount = history.NewOpportunities ?? 0;

            model.InvalidOpportunityCount = history.InvalidOpportunities ?? 0;

            model.ExistingApprenticeshipCount = history.ExistingApprenticeships ?? 0;

            model.TotalApprenticeshipCount = history.NewApprenticeships ?? 0;

            model.InvalidApprenticeshipCount = history.InvalidApprenticeships ?? 0;

            model.ExistingLocationCount = history.ExistingLocations ?? 0;

            model.TotalLocationCount = history.NewLocations ?? 0;

            model.InvalidLocationCount = history.InvalidLocations ?? 0;

            model.ExistingDeliveryLocationCount = history.ExistingDeliveryLocations ?? 0;

            model.TotalDeliveryLocationCount = history.NewDeliveryLocations ?? 0;

            model.InvalidDeliveryLocationCount = history.InvalidDeliveryLocations ?? 0;


            model.UploadStatus = (Constants.BulkUploadStatus)Enum.Parse(typeof(Constants.BulkUploadStatus), currentStatus.BulkUploadStatu.BulkUploadStatusName);

            model.ErrorSummary = new BulkUploadHistoryErrorSummary
            {
                UploadSummaryDetails = new List <BulkUploadHistoryDetailItemsViewModel>()
            };

            if (history.FileContentType != null)
            {
                model.FileContentType = (Constants.FileContentType)Enum.Parse(typeof(Constants.FileContentType), history.FileContentType.ToString());
            }

            foreach (var item in db.BulkUploadExceptionItems.Where(x => x.BulkUploadId == bulkUploadId))
            {
                var bulkUploadHistoryDetailItemsViewModel = new BulkUploadHistoryDetailItemsViewModel
                {
                    ColumnName        = item.ColumnName,
                    RowId             = item.LineNumber,
                    ActualColumnValue = item.ColumnValue,
                    Provider          = item.ProviderId.HasValue ? item.ProviderId.ToString() : string.Empty,
                    Details           = item.Details,
                    ErrorType         = (Constants.BulkUpload_Validation_ErrorType)Enum.Parse(typeof(Constants.BulkUpload_Validation_ErrorType), item.BulkUploadErrorType.BulkUploadErrorTypeName),
                    SectionName       = (Constants.BulkUpload_SectionName)item.BulkUploadSectionId
                };
                model.ErrorSummary.UploadSummaryDetails.Add(bulkUploadHistoryDetailItemsViewModel);
            }
        }