private IEnumerable<string> Validate(Portfolio portfolioToSave)
        {
            var validator = new FormValidator();
            validator.AddRequired(() => portfolioToSave.Name, "Please enter a portfolio name");
            validator.AddValidation(() => IsDuplicateName(portfolioToSave));

            return validator.Apply().ToList();
        }
 private string IsDuplicateName(Portfolio portfolioToSave)
 {
     var portfolio = _porfolioRepository.GetPortfolioByName(portfolioToSave.Name);
     if (portfolio != null && portfolio.ID != portfolioToSave.ID)
     {
         return "Portfolio name is already taken";
     }
     return string.Empty;
 }
        public void SavePortfolio(Portfolio portfolioToSave)
        {
            var errors = Validate((portfolioToSave));
            if (!errors.Any())
            {
                _porfolioRepository.SavePortfolio(portfolioToSave);

                _currentView.ShowSaveSuccessMessage("You saved: " + portfolioToSave.Name);

                _currentView.GoBackToMainActivity();
            }
            else
            {
                _currentView.ShowValidationErrors(errors);
            }
        }
 public IList<Portfolio> GetAllPortfolios()
 {
     var list = new List<Portfolio>();
     var cursor = Db.Query(PORTFOLIO_TABLE_NAME, new[] { "id", "Name" }, null, null, null, null, null);
     if (cursor.Count > 0)
     {
         while (cursor.MoveToNext())
         {
             var portfolio = new Portfolio(cursor.GetInt(0));
             portfolio.Name = cursor.GetString(1);
             list.Add(portfolio);
         }
     }
     if (!cursor.IsClosed) cursor.Close();
     return list;
 }
 public Portfolio GetPortfolioById(long portfolioId)
 {
     var cursor = Db.Query(PORTFOLIO_TABLE_NAME, new[] { "id", "Name" }, " ID = " + portfolioId, null, null, null, null);
     if (cursor.Count > 0)
     {
         cursor.MoveToNext();
         var portfolio = new Portfolio(cursor.GetInt(0));
         portfolio.Name = cursor.GetString(1);
         if (!cursor.IsClosed) cursor.Close();
         return portfolio;
     }
     return null;
 }
 private void InsertNewPortfolio(Portfolio portfolio)
 {
     Log.Error("InsertNewPortfolio", "Portfolios inserted: " + Db.Insert(PORTFOLIO_TABLE_NAME, null, GetPortfolioContentValues(portfolio)));
 }
 private void UpdateExistingPortfolio(Portfolio portfolio)
 {
     var portfolioID = portfolio.ID ?? -1;
     Log.Error("UpdateExistingPortfolio", "Portfolios updated: " + Db.Update(PORTFOLIO_TABLE_NAME, GetPortfolioContentValues(portfolio), "id = " + portfolioID, null));
 }
 private static ContentValues GetPortfolioContentValues(Portfolio portfolio)
 {
     var contentValues = new ContentValues();
     contentValues.Put("Name", portfolio.Name);
     return contentValues;
 }
 public void SavePortfolio(Portfolio portfolio)
 {
     if (portfolio.ID == null)
     {
         InsertNewPortfolio(portfolio);
     }
     else
     {
         UpdateExistingPortfolio(portfolio);
     }
 }
 public Portfolio GetPortfolioByName(string portfolioName)
 {
     var cursor = Db.RawQuery("SELECT id, Name FROM " + PORTFOLIO_TABLE_NAME + " WHERE Name = ?", new[] {portfolioName} );
     if (cursor.Count > 0)
     {
         cursor.MoveToNext();
         var portfolio = new Portfolio(cursor.GetLong(0));
         portfolio.Name = cursor.GetString(1);
         if (!cursor.IsClosed) cursor.Close();
         return portfolio;
     }
     return null;
 }
 private Portfolio GetPortfolioToSave()
 {
     Portfolio portfolioToSave;
     var portfolioId = Intent.GetLongExtra(PORTFOLIOIDEXTRA, -1);
     if (portfolioId != -1)
     {
         portfolioToSave = new Portfolio(portfolioId);
     }
     else
     {
         portfolioToSave = new Portfolio();
     }
     portfolioToSave.Name =  PortfolioName.Text;
     return portfolioToSave;
 }
 public void PopulateForm(Portfolio portfolio)
 {
     PortfolioName.Text = portfolio.Name;
 }