Esempio n. 1
0
        private BulkUploadViewModel BuildAssetsForDisplay(string rawCsv, int tenantId)
        {
            string[] csvRawLines = ProcessCsvLines(rawCsv);
            string[] csvHeader   = ProcessCsvHeader(csvRawLines[0]);

            IList <Asset>          assets = new List <Asset>();
            IList <List <string> > errors = new List <List <string> >();

            string[] csvLines = RemoveBlankLines(csvRawLines);

            for (int i = 1; i < csvLines.Length; i++)
            {
                ConvertedAsset convertedAsset = ProcessLineToAsset(csvHeader, csvLines[i], tenantId, i);
                assets.Add(convertedAsset.Asset);
                if (convertedAsset.Errors.Count > 0)
                {
                    errors.Add(convertedAsset.Errors);
                }
                convertedAsset.Asset.TenantId         = tenantId;
                convertedAsset.Asset.AssetMakeId      = convertedAsset.Asset.AssetMake.LookupId;
                convertedAsset.Asset.CategoryId       = convertedAsset.Asset.Category.LookupId;
                convertedAsset.Asset.WarrantyPeriodId = convertedAsset.Asset.WarrantyPeriod.LookupId;
            }
            Mapper.CreateMap <Asset, AssetViewModel>();
            var assetsForView = Mapper.Map <IList <AssetViewModel> >(assets);

            BulkUploadViewModel response = new BulkUploadViewModel
            {
                Errors = errors,
                Assets = assetsForView
            };

            return(response);
        }
Esempio n. 2
0
        private ConvertedAssetsDto BuildAssets(string rawCsv, int tenantId)
        {
            string[] csvRawLines = ProcessCsvLines(rawCsv);
            string[] csvHeader   = ProcessCsvHeader(csvRawLines[0]);

            string[]               csvLines = RemoveBlankLines(csvRawLines);
            List <Lookup>          lookups  = new List <Lookup>();
            IList <Asset>          assets   = new List <Asset>();
            IList <List <string> > errors   = new List <List <string> >();

            for (int i = 1; i < csvLines.Length; i++)
            {
                ConvertedAsset convertedAsset = ProcessLineToAsset(csvHeader, csvLines[i], tenantId, i);
                if (!string.IsNullOrWhiteSpace(convertedAsset.Asset.Model) &&
                    !string.IsNullOrWhiteSpace(convertedAsset.Asset.SerialNumber))
                {
                    assets.Add(convertedAsset.Asset);
                    errors.Add(convertedAsset.Errors);
                    convertedAsset.Asset.TenantId         = tenantId;
                    convertedAsset.Asset.AssetMakeId      = convertedAsset.Asset.AssetMake.LookupId;
                    convertedAsset.Asset.CategoryId       = convertedAsset.Asset.Category.LookupId;
                    convertedAsset.Asset.WarrantyPeriodId = convertedAsset.Asset.WarrantyPeriod.LookupId;
                    LoadLookupsForAsset(convertedAsset.Asset, lookups);
                }
            }

            ConvertedAssetsDto response = new ConvertedAssetsDto
            {
                Errors = errors.ToList(),
                Assets = assets.ToList()
            };

            return(response);
        }
        /// <summary>
        /// Create and asset object that can be saved to the database for a single row in the csv file
        /// </summary>
        /// <param name="header"></param>
        /// <param name="line"></param>
        /// <returns></returns>
        public ConvertedAsset ProcessLineToAsset(string[] header, string line, int tenantId, int rowId)
        {
            ConvertedAsset convertedAsset = new ConvertedAsset();
            convertedAsset.Errors = new List<string>();
            string[] linesArray = line.Split(',');
            Asset asset = new Asset();
            for (int i = 0; i < linesArray.Length; i++)
            {
                asset.AssetId = rowId;
                switch (header[i].ToLower())
                {
                    case "model":
                        asset.Model = linesArray[i];
                        break;
                    case "serialnumber":
                        asset.SerialNumber = linesArray[i];
                        break;
                    case "purchasedate":
                        DateTime purchaseDate;
                        if (DateTime.TryParse(linesArray[i], out purchaseDate))
                        {
                            asset.PurchaseDate = purchaseDate;
                        }
                        else
                        {
                            convertedAsset.Errors.Add(string.Format(HIResources.Strings.ImportError_PurchaseDate, rowId, linesArray[i]));
                        }
                        break;
                    case "warrantyperiod":
                        string warrantyPeriodDescription = linesArray[i];
                        Lookup warrantyPeriod =
                        LookupRepository.Single(
                            x => x.Type.Description == EnumHelper.LookupTypes.WarrantyPeriod.ToString()
                                && x.Description.Equals(warrantyPeriodDescription,
                                StringComparison.InvariantCultureIgnoreCase));
                        if (warrantyPeriod == null)
                        {
                            LookupType type = LookupTypesRepository.Single(
                                x => x.Description == EnumHelper.LookupTypes.WarrantyPeriod.ToString());
                            warrantyPeriod = new Lookup
                            {
                                Description = warrantyPeriodDescription,
                                LookupTypeId = type.LookupTypeId,
                                TenantId = tenantId,
                                Type = type
                            };
                        }
                        asset.WarrantyPeriod = warrantyPeriod;
                        break;
                    case "obsolescencedate":
                        DateTime obsolescenseDate;
                        if (DateTime.TryParse(linesArray[i], out obsolescenseDate))
                        {
                            asset.ObsolescenseDate = obsolescenseDate;
                        }
                        else
                        {
                            convertedAsset.Errors.Add(string.Format(HIResources.Strings.ImportError_ObsolescenseDate, rowId, linesArray[i]));
                        }
                        break;
                    case "pricepaid":
                        decimal pricePaid;
                        if(decimal.TryParse(linesArray[i], out pricePaid))
                        {
                            asset.PricePaid = pricePaid;
                        }
                        else
                        {
                            convertedAsset.Errors.Add(string.Format(HIResources.Strings.ImportError_PricePaid, rowId, linesArray[i]));
                        }
                        break;
                    case "assetmake":
                        string assetMakeDescription = linesArray[i];
                        Lookup assetMake =
                            LookupRepository.Single(
                            x=> x.Type.Description == EnumHelper.LookupTypes.Make.ToString()
                                && x.Description.Equals(assetMakeDescription,
                                StringComparison.InvariantCultureIgnoreCase));
                        if (assetMake == null)
                        {
                            LookupType type = LookupTypesRepository.Single(
                                x => x.Description == EnumHelper.LookupTypes.Make.ToString());
                            assetMake = new Lookup
                            {
                                Description = assetMakeDescription,
                                LookupTypeId = type.LookupTypeId,
                                TenantId = tenantId,
                                Type = type
                            };
                        }
                        asset.AssetMake = assetMake;
                        break;
                    case "category":
                        string categoryDescription = linesArray[i];

                        Lookup category =
                            LookupRepository.Single(
                            x => x.Type.Description == EnumHelper.LookupTypes.Category.ToString()
                                && x.Description.Equals(categoryDescription,
                                StringComparison.InvariantCultureIgnoreCase));
                        if (category == null)
                        {
                            LookupType type = LookupTypesRepository.Single(
                                x => x.Description == EnumHelper.LookupTypes.Category.ToString());
                            category = new Lookup
                            {
                                Description = categoryDescription,
                                LookupTypeId = type.LookupTypeId,
                                TenantId = tenantId,
                                Type = type
                            };
                        }
                        asset.Category = category;
                        break;
                    case "locationdescription":
                        asset.LocationDescription = linesArray[i];
                        break;
                    default:
                        break;
                }
            }
            if(string.IsNullOrWhiteSpace(asset.Model))
            {
                convertedAsset.Errors.Add(string.Format(HIResources.Strings.ImportError_ModelMissing, asset.AssetId));
            }
            if(string.IsNullOrWhiteSpace(asset.Model))
            {
                convertedAsset.Errors.Add(string.Format(HIResources.Strings.ImportError_SerialNumberMissing, asset.AssetId));
            }
            convertedAsset.Asset = asset;
            return convertedAsset;
        }
Esempio n. 4
0
        /// <summary>
        /// Create and asset object that can be saved to the database for a single row in the csv file
        /// </summary>
        /// <param name="header"></param>
        /// <param name="line"></param>
        /// <returns></returns>
        public ConvertedAsset ProcessLineToAsset(string[] header, string line, int tenantId, int rowId)
        {
            ConvertedAsset convertedAsset = new ConvertedAsset();

            convertedAsset.Errors = new List <string>();
            string[] linesArray = line.Split(',');
            Asset    asset      = new Asset();

            for (int i = 0; i < linesArray.Length; i++)
            {
                asset.AssetId = rowId;
                switch (header[i].ToLower())
                {
                case "model":
                    asset.Model = linesArray[i];
                    break;

                case "serialnumber":
                    asset.SerialNumber = linesArray[i];
                    break;

                case "purchasedate":
                    DateTime purchaseDate;
                    if (DateTime.TryParse(linesArray[i], out purchaseDate))
                    {
                        asset.PurchaseDate = purchaseDate;
                    }
                    else
                    {
                        convertedAsset.Errors.Add(string.Format(HIResources.Strings.ImportError_PurchaseDate, rowId, linesArray[i]));
                    }
                    break;

                case "warrantyperiod":
                    string warrantyPeriodDescription = linesArray[i];
                    Lookup warrantyPeriod            =
                        LookupRepository.Single(
                            x => x.Type.Description == EnumHelper.LookupTypes.WarrantyPeriod.ToString() &&
                            x.Description.Equals(warrantyPeriodDescription,
                                                 StringComparison.InvariantCultureIgnoreCase));
                    if (warrantyPeriod == null)
                    {
                        LookupType type = LookupTypesRepository.Single(
                            x => x.Description == EnumHelper.LookupTypes.WarrantyPeriod.ToString());
                        warrantyPeriod = new Lookup
                        {
                            Description  = warrantyPeriodDescription,
                            LookupTypeId = type.LookupTypeId,
                            TenantId     = tenantId,
                            Type         = type
                        };
                    }
                    asset.WarrantyPeriod = warrantyPeriod;
                    break;

                case "obsolescencedate":
                    DateTime obsolescenseDate;
                    if (DateTime.TryParse(linesArray[i], out obsolescenseDate))
                    {
                        asset.ObsolescenseDate = obsolescenseDate;
                    }
                    else
                    {
                        convertedAsset.Errors.Add(string.Format(HIResources.Strings.ImportError_ObsolescenseDate, rowId, linesArray[i]));
                    }
                    break;

                case "pricepaid":
                    decimal pricePaid;
                    if (decimal.TryParse(linesArray[i], out pricePaid))
                    {
                        asset.PricePaid = pricePaid;
                    }
                    else
                    {
                        convertedAsset.Errors.Add(string.Format(HIResources.Strings.ImportError_PricePaid, rowId, linesArray[i]));
                    }
                    break;

                case "assetmake":
                    string assetMakeDescription = linesArray[i];
                    Lookup assetMake            =
                        LookupRepository.Single(
                            x => x.Type.Description == EnumHelper.LookupTypes.Make.ToString() &&
                            x.Description.Equals(assetMakeDescription,
                                                 StringComparison.InvariantCultureIgnoreCase));
                    if (assetMake == null)
                    {
                        LookupType type = LookupTypesRepository.Single(
                            x => x.Description == EnumHelper.LookupTypes.Make.ToString());
                        assetMake = new Lookup
                        {
                            Description  = assetMakeDescription,
                            LookupTypeId = type.LookupTypeId,
                            TenantId     = tenantId,
                            Type         = type
                        };
                    }
                    asset.AssetMake = assetMake;
                    break;

                case "category":
                    string categoryDescription = linesArray[i];

                    Lookup category =
                        LookupRepository.Single(
                            x => x.Type.Description == EnumHelper.LookupTypes.Category.ToString() &&
                            x.Description.Equals(categoryDescription,
                                                 StringComparison.InvariantCultureIgnoreCase));
                    if (category == null)
                    {
                        LookupType type = LookupTypesRepository.Single(
                            x => x.Description == EnumHelper.LookupTypes.Category.ToString());
                        category = new Lookup
                        {
                            Description  = categoryDescription,
                            LookupTypeId = type.LookupTypeId,
                            TenantId     = tenantId,
                            Type         = type
                        };
                    }
                    asset.Category = category;
                    break;

                case "locationdescription":
                    asset.LocationDescription = linesArray[i];
                    break;

                default:
                    break;
                }
            }
            if (string.IsNullOrWhiteSpace(asset.Model))
            {
                convertedAsset.Errors.Add(string.Format(HIResources.Strings.ImportError_ModelMissing, asset.AssetId));
            }
            if (string.IsNullOrWhiteSpace(asset.Model))
            {
                convertedAsset.Errors.Add(string.Format(HIResources.Strings.ImportError_SerialNumberMissing, asset.AssetId));
            }
            convertedAsset.Asset = asset;
            return(convertedAsset);
        }