public static async Task <int> DeleteItemAsync(OpportunityModel opportunity) { if (!_isInitialized) { await Initialize(); } return(await _database.DeleteAsync(opportunity)); }
public OpportunitiesViewModel() { MessagingCenter.Subscribe <object>(this, "RefreshData", async(sender) => { await RefreshOpportunitiesDataAsync(); }); Task.Run(async() => { // If the database is empty, initialize the database with dummy data if (await App.Database.GetNumberOfRowsAsync() < 20) { for (int i = 0; i < 20; i++) { var tempModel = new OpportunityModel(); var rnd = new Random(); var companyIndex = rnd.Next(50); var dbaIndex = rnd.Next(50); var leaseAmount = rnd.Next(1000000); var ownerIndex = rnd.Next(50); var dayIndex = rnd.Next(1, 28); var monthIndex = rnd.Next(1, 12); var yearIndex = rnd.Next(2000, 2015); var salesStageNumber = rnd.Next(2); SalesStages salesStage; switch (salesStageNumber) { case 0: salesStage = SalesStages.New; break; case 1: salesStage = SalesStages.Pending; break; default: salesStage = SalesStages.Closed; break; } tempModel.Topic = $"{i + 715003} / Investment Data Corp"; tempModel.Company = $"{LoremIpsumConstants.LoremIpsum.Substring(companyIndex, 10)}"; tempModel.DBA = $"{LoremIpsumConstants.LoremIpsum.Substring(dbaIndex, 10)}"; tempModel.LeaseAmount = leaseAmount; tempModel.SalesStage = salesStage; tempModel.Owner = $"{LoremIpsumConstants.LoremIpsum.Substring(ownerIndex, 10)}"; tempModel.DateCreated = new DateTime(yearIndex, monthIndex, dayIndex); await App.Database.SaveOpportunityAsync(tempModel); } } await RefreshOpportunitiesDataAsync(); }); }
public AddOpportunityViewModel(AddOpportunityPage page) { addOpportunityModel = new OpportunityModel(); SalesStage = SalesStages.New; SaveButtonTapped = new Command(() => { DateCreated = DateTime.Now; Task.Run(() => App.Database.SaveOpportunity(addOpportunityModel)); page.HandleSaveToDatabaseCompleted(page, new EventArgs()); }); }
public OpportunitiesViewModel() { Task.Run(async () => await RefreshOpportunitiesData()); MessagingCenter.Subscribe<object>(this, "RefreshData", async (sender) => { await RefreshOpportunitiesData(); }); // If the database is empty, initialize the database with dummy data if (App.Database.GetNumberOfRows() < 20) { for (int i = 0; i < 20; i++) { var tempModel = new OpportunityModel(); var rnd = new Random(); var companyIndex = rnd.Next(50); var dbaIndex = rnd.Next(50); var leaseAmount = rnd.Next(1000000); var ownerIndex = rnd.Next(50); var dayIndex = rnd.Next(1, 28); var monthIndex = rnd.Next(1, 12); var yearIndex = rnd.Next(2000, 2015); var salesStageNumber = rnd.Next(2); SalesStages salesStage; switch (salesStageNumber) { case 0: salesStage = SalesStages.New; break; case 1: salesStage = SalesStages.Pending; break; default: salesStage = SalesStages.Closed; break; } tempModel.Topic = $"{i + 715003} / Investment Data Corp"; tempModel.Company = $"{LoremIpsum_Constants.LoremIpsum.Substring(companyIndex, 10)}"; tempModel.DBA = $"{LoremIpsum_Constants.LoremIpsum.Substring(dbaIndex, 10)}"; tempModel.LeaseAmount = leaseAmount; tempModel.SalesStage = salesStage; tempModel.Owner = $"{LoremIpsum_Constants.LoremIpsum.Substring(ownerIndex, 10)}"; tempModel.DateCreated = new DateTime(yearIndex, monthIndex, dayIndex); App.Database.SaveOpportunity(tempModel); } } }
public static async Task <int> SaveOpportunityAsync(OpportunityModel opportunity) { var databaseConnection = await GetDatabaseConnectionAsync(); var isOpportunityInDatabase = await GetOpportunityByTopicAsync(opportunity.Topic) != null; if (isOpportunityInDatabase) { return(await databaseConnection.UpdateAsync(opportunity)); } return(await databaseConnection.InsertAsync(opportunity)); }
public int SaveOpportunity(OpportunityModel opportunity) { lock (locker) { if (GetOpportunityByTopic(opportunity.Topic) != null) { database.Update(opportunity); return(opportunity.ID); } else { return(database.Insert(opportunity)); } } }
public static async Task <int> SaveOpportunityAsync(OpportunityModel opportunity) { if (!_isInitialized) { await Initialize(); } var isOpportunityInDatabase = await GetOpportunityByTopicAsync(opportunity.Topic) != null; if (isOpportunityInDatabase) { return(await _database.UpdateAsync(opportunity)); } return(await _database.InsertAsync(opportunity)); }
public AddOpportunityViewModel() { addOpportunityModel = new OpportunityModel(); SalesStage = SalesStages.New; SaveButtonTapped = new Command(() => { if (Topic.Length == 0 || Company.Length == 0 || Owner.Length == 0 || DBA.Length == 0 || LeaseAmount == 0) { SaveError(this, new EventArgs()); return; } DateCreated = DateTime.Now; Task.Run(() => App.Database.SaveOpportunity(addOpportunityModel)); SaveToDatabaseCompleted(this, new EventArgs()); }); }
async Task InitializeDataInDatabaseAsync(int numberOfOpportunityModelsToGenerate = 20) { for (int i = 0; i < numberOfOpportunityModelsToGenerate; i++) { var tempModel = new OpportunityModel(); var rnd = new Random(); var companyIndex = rnd.Next(50); var dbaIndex = rnd.Next(50); var leaseAmount = rnd.Next(1000000); var ownerIndex = rnd.Next(50); var dayIndex = rnd.Next(1, 28); var monthIndex = rnd.Next(1, 12); var yearIndex = rnd.Next(2000, 2015); var salesStageNumber = rnd.Next(2); SalesStages salesStage; switch (salesStageNumber) { case 0: salesStage = SalesStages.New; break; case 1: salesStage = SalesStages.Pending; break; default: salesStage = SalesStages.Closed; break; } tempModel.Topic = $"{i + 715003} / Investment Data Corp"; tempModel.Company = $"{LoremIpsumConstants.LoremIpsum.Substring(companyIndex, 10)}"; tempModel.DBA = $"{LoremIpsumConstants.LoremIpsum.Substring(dbaIndex, 10)}"; tempModel.LeaseAmount = leaseAmount; tempModel.SalesStage = salesStage; tempModel.Owner = $"{LoremIpsumConstants.LoremIpsum.Substring(ownerIndex, 10)}"; tempModel.DateCreated = new DateTime(yearIndex, monthIndex, dayIndex); await OpportunityModelDatabase.SaveOpportunityAsync(tempModel); } }
public async Task <int> SaveOpportunityAsync(OpportunityModel opportunity) { var isOpportunityInDatabase = await GetOpportunityByTopicAsync(opportunity.Topic) != null; return(await Task.Run(() => { if (isOpportunityInDatabase) { lock (_locker) { database.Update(opportunity); } return opportunity.ID; } lock (_locker) { return database.Insert(opportunity); } })); }
public static async Task <int> SaveOpportunity(OpportunityModel opportunity) { var databaseConnection = await GetDatabaseConnection <OpportunityModel>().ConfigureAwait(false); return(await ExecuteDatabaseFunction(() => databaseConnection.InsertOrReplaceAsync(opportunity)).ConfigureAwait(false)); }
public OpportunityDetailsPage(OpportunityModel opportunityModelSelected) { BindingContext = opportunityModelSelected; var topicLabel = new OpportunitiesDetailsTextLabel { Text = "Topic" }; var topicEntry = new Label(); topicEntry.SetBinding(Label.TextProperty, nameof(OpportunityModel.Topic)); var companyLabel = new OpportunitiesDetailsTextLabel { Text = "Company" }; var companyEntry = new Label(); companyEntry.SetBinding(Label.TextProperty, nameof(OpportunityModel.Company)); var dbaLabel = new OpportunitiesDetailsTextLabel { Text = "DBA" }; var dbaEntry = new Label(); dbaEntry.SetBinding(Label.TextProperty, nameof(OpportunityModel.DBA)); var leaseAmountLabel = new OpportunitiesDetailsTextLabel { Text = "Lease Amount" }; var leaseAmountEntry = new Label(); leaseAmountEntry.SetBinding(Label.TextProperty, nameof(OpportunityModel.LeaseAmount)); var ownerLabel = new OpportunitiesDetailsTextLabel { Text = "Owner" }; var ownerEntry = new Label(); ownerEntry.SetBinding(Label.TextProperty, nameof(OpportunityModel.Owner)); var mainLayout = new RelativeLayout(); mainLayout.Children.Add(topicLabel, Constraint.Constant(0), Constraint.Constant(0) ); mainLayout.Children.Add(topicEntry, Constraint.Constant(0), Constraint.RelativeToView(topicLabel, (parent, view) => view.Y + view.Height), Constraint.RelativeToParent((parent) => parent.Width) ); mainLayout.Children.Add(companyLabel, Constraint.Constant(0), Constraint.RelativeToView(topicEntry, (parent, view) => view.Y + view.Height + _relativeLayoutSpacing) ); mainLayout.Children.Add(companyEntry, Constraint.Constant(0), Constraint.RelativeToView(companyLabel, (parent, view) => view.Y + view.Height), Constraint.RelativeToParent((parent) => parent.Width) ); mainLayout.Children.Add(leaseAmountLabel, Constraint.Constant(0), Constraint.RelativeToView(companyEntry, (parent, view) => view.Y + view.Height + _relativeLayoutSpacing) ); mainLayout.Children.Add(leaseAmountEntry, Constraint.Constant(0), Constraint.RelativeToView(leaseAmountLabel, (parent, view) => view.Y + view.Height), Constraint.RelativeToParent((parent) => parent.Width) ); mainLayout.Children.Add(ownerLabel, Constraint.Constant(0), Constraint.RelativeToView(leaseAmountEntry, (parent, view) => view.Y + view.Height + _relativeLayoutSpacing) ); mainLayout.Children.Add(ownerEntry, Constraint.Constant(0), Constraint.RelativeToView(ownerLabel, (parent, view) => view.Y + view.Height), Constraint.RelativeToParent((parent) => parent.Width) ); mainLayout.Children.Add(dbaLabel, Constraint.Constant(0), Constraint.RelativeToView(ownerEntry, (parent, view) => view.Y + view.Height + _relativeLayoutSpacing) ); mainLayout.Children.Add(dbaEntry, Constraint.Constant(0), Constraint.RelativeToView(dbaLabel, (parent, view) => view.Y + view.Height), Constraint.RelativeToParent((parent) => parent.Width) ); Title = PageTitleConstants.OpportunityDetailPage;; var termsScrollView = new ScrollView { Content = mainLayout }; Padding = new Thickness(10, 0, 10, 0); Content = termsScrollView; }
public OpportunitiesViewCell() { var model = BindingContext as OpportunityModel; #region Create Image var beaconFundingImage = new Image { Source = "beaconfundingicon" }; #endregion #region Create Topic Stack var topicLabel = new Label { Text = "Topic", FontAttributes = FontAttributes.Bold }; var topic = new Label(); topic.SetBinding(Label.TextProperty, nameof(model.Topic)); var topicStack = new StackLayout { Children = { topicLabel, topic } }; #endregion #region Create Company var companyLabel = new Label { Text = "Company", FontAttributes = FontAttributes.Bold }; var company = new Label(); company.SetBinding(Label.TextProperty, nameof(model.Company)); var companyStack = new StackLayout { Children = { companyLabel, company } }; #endregion #region Create LeaseAmount var leaseAmountLabel = new Label { Text = "LeaseAmount", FontAttributes = FontAttributes.Bold }; var leaseAmount = new Label(); leaseAmount.SetBinding(Label.TextProperty, nameof(model.LeaseAmountAsCurrency)); var leaseAmountStack = new StackLayout { Children = { leaseAmountLabel, leaseAmount } }; #endregion #region Create LeaseAmount var ownerLabel = new Label { Text = "Owner", FontAttributes = FontAttributes.Bold }; var owner = new Label(); owner.SetBinding(Label.TextProperty, nameof(model.Owner)); var ownerStack = new StackLayout { Children = { ownerLabel, owner } }; #endregion #region Create MenuItem var deleteAction = new MenuItem { Text = "Delete", IsDestructive = true }; deleteAction.Clicked += async(sender, e) => { var menuItem = (MenuItem)sender; OpportunityModel thisModel = ((OpportunityModel)menuItem.BindingContext); await OpportunityModelDatabase.DeleteItemAsync(thisModel); //Wait for the iOS animation to finish switch (Device.RuntimePlatform) { case Device.iOS: await Task.Delay(300); break; } MessagingCenter.Send <object>(this, "RefreshData"); }; ContextActions.Add(deleteAction); #endregion StackLayout cellStack; #region Create Cell Horizontal StackLayout for Phone if (Device.Idiom == TargetIdiom.Phone) { topic.LineBreakMode = LineBreakMode.NoWrap; cellStack = new StackLayout { HorizontalOptions = LayoutOptions.Fill, Padding = 10, Spacing = 20, Orientation = StackOrientation.Horizontal, Children = { beaconFundingImage, topicStack } }; } #endregion #region Create Cell Horizontal StackLayout for Tablet or Desktop else { cellStack = new StackLayout { HorizontalOptions = LayoutOptions.Fill, Padding = 10, Spacing = 20, Orientation = StackOrientation.Horizontal, Children = { beaconFundingImage, topicStack, companyStack, leaseAmountStack, ownerStack } }; } #endregion View = cellStack; }
public static async Task <int> DeleteItemAsync(OpportunityModel opportunity) { var databaseConnection = await GetDatabaseConnectionAsync(); return(await databaseConnection.DeleteAsync(opportunity)); }
public AddOpportunityViewModel(AddOpportunityPage page) { addOpportunityModel = new OpportunityModel(); SalesStage = SalesStages.New; SaveButtonTapped = new Command(() => { if (Topic.Length == 0 || Company.Length == 0 || Owner.Length == 0 || DBA.Length == 0 || LeaseAmount == 0) { SaveError(this, new EventArgs()); return; } DateCreated = DateTime.Now; Task.Run(() => App.Database.SaveOpportunity(addOpportunityModel)); page.HandleSaveToDatabaseCompleted(page, new EventArgs()); }); }
public OpportunitiesDataTemplate(OpportunityModel opportunityModel) : base(() => LoadTemplate(opportunityModel)) { }
public static async Task <int> DeleteItem(OpportunityModel opportunity) { var databaseConnection = await GetDatabaseConnection <OpportunityModel>().ConfigureAwait(false); return(await ExecuteDatabaseFunction(() => databaseConnection.DeleteAsync(opportunity)).ConfigureAwait(false)); }
public OpportunitiesViewCell() { #region Create Image var beaconFundingImage = new Image { Source = "beaconfundingicon" }; #endregion #region Create Topic Stack var topicLabel = new Label { Text = "Topic", FontAttributes = FontAttributes.Bold }; var topic = new Label(); topic.SetBinding(Label.TextProperty, "Topic"); var topicStack = new StackLayout { Children = { topicLabel, topic } }; #endregion #region Create Company var companyLabel = new Label { Text = "Company", FontAttributes = FontAttributes.Bold }; var company = new Label(); company.SetBinding(Label.TextProperty, "Company"); var companyStack = new StackLayout { Children = { companyLabel, company } }; #endregion #region Create LeaseAmount var leaseAmountLabel = new Label { Text = "LeaseAmount", FontAttributes = FontAttributes.Bold }; var leaseAmount = new Label(); leaseAmount.SetBinding(Label.TextProperty, "LeaseAmountAsCurrency"); var leaseAmountStack = new StackLayout { Children = { leaseAmountLabel, leaseAmount } }; #endregion #region Create LeaseAmount var ownerLabel = new Label { Text = "Owner", FontAttributes = FontAttributes.Bold }; var owner = new Label(); owner.SetBinding(Label.TextProperty, "Owner"); var ownerStack = new StackLayout { Children = { ownerLabel, owner } }; #endregion #region var deleteAction = new MenuItem { Text = "Delete", IsDestructive = true }; deleteAction.SetBinding(MenuItem.CommandProperty, "DeleteActionSelected"); deleteAction.Clicked += (sender, e) => { var menuItem = (MenuItem)sender; OpportunityModel thisModel = ((OpportunityModel)menuItem.BindingContext); App.Database.DeleteItem(thisModel.ID); MessagingCenter.Send <object>(this, "RefreshData"); }; ContextActions.Add(deleteAction); #endregion StackLayout cellStack; #region Create Cell Horizontal StackLayout for Phone if (Device.Idiom == TargetIdiom.Phone) { topic.LineBreakMode = LineBreakMode.NoWrap; cellStack = new StackLayout { HorizontalOptions = LayoutOptions.Fill, Padding = 10, Spacing = 20, Orientation = StackOrientation.Horizontal, Children = { beaconFundingImage, topicStack } }; } #endregion #region Create Cell Horizontal StackLayout for Tablet or Desktop else { cellStack = new StackLayout { HorizontalOptions = LayoutOptions.Fill, Padding = 10, Spacing = 20, Orientation = StackOrientation.Horizontal, Children = { beaconFundingImage, topicStack, companyStack, leaseAmountStack, ownerStack } }; } #endregion View = cellStack; }
static Task ExecuteSwipeViewTappedCommand(OpportunityModel opportunityModel) => Application.Current.MainPage.Navigation.PushAsync(new OpportunityDetailsPage(opportunityModel));
static SwipeView LoadTemplate(OpportunityModel opportunityModel) { var beaconFundingImage = new Image { Source = "beaconfundingicon", HeightRequest = _rowHeight }; var topicTitleLabel = new Label { Text = "Topic", FontAttributes = FontAttributes.Bold, VerticalTextAlignment = TextAlignment.End }; var topicDescriptionLabel = new Label { VerticalTextAlignment = TextAlignment.Start, Text = opportunityModel.Topic }; var companyTitleLabel = new Label { Text = "Company", FontAttributes = FontAttributes.Bold, VerticalTextAlignment = TextAlignment.End }; var companyDescriptionLabel = new Label { VerticalTextAlignment = TextAlignment.Start, Text = opportunityModel.Company }; var leaseAmountTitleLabel = new Label { Text = "Lease Amount", FontAttributes = FontAttributes.Bold, VerticalTextAlignment = TextAlignment.End }; var leaseAmountDescriptionLabel = new Label { VerticalTextAlignment = TextAlignment.Start, Text = opportunityModel.LeaseAmountAsCurrency }; var ownerTitleLabel = new Label { Text = "Owner", FontAttributes = FontAttributes.Bold, VerticalTextAlignment = TextAlignment.End }; var ownerDescriptionLabel = new Label { VerticalTextAlignment = TextAlignment.Start, Text = opportunityModel.Owner }; var grid = new Grid { BackgroundColor = Color.White, Padding = new Thickness(5, 0, 0, 0), ColumnSpacing = 20, RowDefinitions = { new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }, new RowDefinition { Height = new GridLength(1, GridUnitType.Star) } }, ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(_rowHeight / 3, GridUnitType.Absolute) }, new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) } } }; grid.Children.Add(beaconFundingImage, 0, 0); Grid.SetRowSpan(beaconFundingImage, 2); grid.Children.Add(topicTitleLabel, 1, 0); grid.Children.Add(topicDescriptionLabel, 1, 1); if (Device.Idiom != TargetIdiom.Phone) { grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid.Children.Add(companyTitleLabel, 2, 0); grid.Children.Add(companyDescriptionLabel, 2, 1); grid.Children.Add(leaseAmountTitleLabel, 3, 0); grid.Children.Add(leaseAmountDescriptionLabel, 3, 1); grid.Children.Add(ownerTitleLabel, 4, 0); grid.Children.Add(ownerDescriptionLabel, 4, 1); } var deleteSwipeItem = new SwipeItem { Text = "Delete", IconImageSource = "Delete", BackgroundColor = Color.Red, Command = new AsyncCommand <string>(ExecuteSwipeToDeleteCommand) }; deleteSwipeItem.SetBinding(SwipeItem.CommandParameterProperty, nameof(OpportunityModel.Topic)); var rightSwipeItems = new SwipeItems { Mode = SwipeMode.Execute }; rightSwipeItems.Add(deleteSwipeItem); var swipeViewTappedCommand = new AsyncCommand <OpportunityModel>(ExecuteSwipeViewTappedCommand); var swipeView = new ExtendedSwipeView(swipeViewTappedCommand, opportunityModel) { RightItems = rightSwipeItems, Content = grid, Margin = new Thickness(0, 5, 0, 15) }; return(swipeView); }