public List <PortfolioViewModel> Get(bool mustHaveImages)
        {
            var portfolios = new List <PortfolioViewModel>();

            if (Directory.Exists(PortfolioBase))
            {
                foreach (var directory in Directory.GetDirectories(PortfolioBase))
                {
                    var path = Path.Combine(directory, "data.json");
                    if (!File.Exists(path))
                    {
                        continue;
                    }
                    var jsonText = File.ReadAllText(path);
                    var model    = JsonConvert.DeserializeObject <Portfolio>(jsonText);
                    model.Id = RelativeName(directory);
                    var viewModel = Mapper.Map <PortfolioViewModel>(model);
                    viewModel.Path = string.Format("{0}/{1}", RelativeBase.Replace("~/", ""), RelativeName(directory));
                    if (mustHaveImages == false || (!string.IsNullOrEmpty(viewModel.Thumb) && viewModel.Images.Any()))
                    {
                        portfolios.Add(viewModel);
                    }
                }
            }

            return(portfolios.OrderBy(p => p.Title).ToList());
        }
        private Portfolio GetPortfolio(string id)
        {
            var dataFileName = Path.Combine(PortfolioBase, id, "data.json");

            if (File.Exists(dataFileName))
            {
                var jsonText = File.ReadAllText(dataFileName);
                var model    = JsonConvert.DeserializeObject <Portfolio>(jsonText);
                model.Path = string.Format("{0}/{1}", RelativeBase.Replace("~/", ""), id);
                model.Id   = id;
                return(model);
            }
            return(new Portfolio());
        }