async Task ExecuteCreateEventCommandAsync() { if (IsBusy) { return; } IsBusy = true; try { Models.Constraint socialConstraint = new Models.Constraint { Operator = "owner", Value = Settings.UserId }; DimensionView socialDimension = new DimensionView { Label = "Social", Interval = true, ConstraintList = new List <Models.Constraint> { socialConstraint } }; Dimensions.Add(socialDimension); Settings.CurrentSharingSpace = this.SharingSpace.Id; var response = await _apiServices.PostSharingSpaceAsync(this.SharingSpace, Settings.AccessToken); foreach (var dimension in this.Dimensions) { var dimensionId = Utilities.NewGuid(); var dataypeId = Utilities.NewGuid(); await _apiServices.PostDimensionAsync(new Dimension { Id = dimensionId, Interval = dimension.Interval, Label = dimension.Label }); // metadata related tables await _apiServices.PostDatatypeAsync(new Datatype { Id = dataypeId, Type = "string", Domain = "" }); await _apiServices.PostDimDatatypeAsync(new DimDatatype { DatatypeId = dataypeId, DimensionId = dimensionId }); foreach (var constraint in dimension.ConstraintList) { constraint.Id = Utilities.NewGuid(); await _apiServices.PostConstraintAsync(constraint); await _apiServices.PostEventAsync(new Event { ConstraintId = constraint.Id, DimensionId = dimensionId, SharingSpaceId = this.SharingSpace.Id }); } } await CloudService.SyncOfflineCacheAsync(); // navigate to event detail (overview) MessagingCenter.Send(this, "NavigateToEventOverview", SharingSpace); } catch (Exception ex) { Debug.WriteLine("Error: " + ex.Message); Debug.WriteLine("Error Full: " + ex); await Application.Current.MainPage.DisplayAlert("Event creation failed", ex.Message, "OK"); } finally { IsBusy = false; } }
private async void Join_Clicked(object sender, EventArgs e) { if (IsBusy) { return; } IsBusy = true; try { // check if he belongs already to this event or he is the owner //var table = await CloudService.GetTableAsync<SharingSpace>(); var res1 = await _apiServices.VerifyOnwershipOfEvent(selectedSharingSpace.Id, Settings.AccessToken); var res2 = await _apiServices.VerifyUserParticipation(selectedSharingSpace.Id, Settings.AccessToken); if (res1 == null && res2 == null) { // not owner neither participant // add constraint var constraintId = Utilities.NewGuid(); Models.Constraint socialConstraint = new Models.Constraint { Id = constraintId, Operator = "participant", Value = Settings.UserId }; await _apiServices.PostConstraintAsync(socialConstraint); // get social dimensionId related to the current sharing space string dimensionId = await _apiServices.GetDimensionId(selectedSharingSpace.Id, "Social", Settings.AccessToken); Event newEvent = new Event { ConstraintId = constraintId, DimensionId = dimensionId, SharingSpaceId = selectedSharingSpace.Id }; await _apiServices.PostEventAsync(newEvent); // Navigate to event overview var objectList = await _apiServices.GetObjectsBySharingSpace(selectedSharingSpace.Id); Navigation.InsertPageBefore(new EventOverviewPage(selectedSharingSpace, objectList), this); await Navigation.PopAsync(); } else { // Navigate to event overview var objectList = await _apiServices.GetObjectsBySharingSpace(selectedSharingSpace.Id); //MenuPage.NavPage = new EventOverviewPage(selectedSharingSpace, objectList); Navigation.InsertPageBefore(new EventOverviewPage(selectedSharingSpace, objectList), this); await Navigation.PopAsync(); } } catch (Exception ex) { Debug.WriteLine("Error: " + ex.Message); } finally { IsBusy = false; } }
private async void NextButton_Clicked(object sender, EventArgs e) { // save sharing space and constraints SharingSpace sharingSpace = new SharingSpace { CreationDate = DateTime.Now, CreationLocation = LatitudeLabel.Detail + ", " + LongitudeLabel.Detail, Descriptor = eventDescriptor.Text, Id = Utilities.NewGuid(), UserId = Settings.UserId }; DateTime startDate = dateStart.Date + timeStart.Time; DateTime endDate = dateEnd.Date + timeEnd.Time; Models.Constraint timeConstraint1 = new Models.Constraint { Operator = "begin", Value = startDate.ToString() }; Models.Constraint timeConstraint2 = new Models.Constraint { Operator = "end", Value = endDate.ToString() }; Models.Constraint locationConstraint1 = new Models.Constraint { Operator = "range", Value = mySlider.Value.ToString() }; Models.Constraint locationConstraint2 = new Models.Constraint { Operator = "latitude", Value = LatitudeLabel.Detail }; Models.Constraint locationConstraint3 = new Models.Constraint { Operator = "longitude", Value = LongitudeLabel.Detail }; //var constraintId = Guid.NewGuid().ToString(); Models.Constraint locationConstraint4 = new Models.Constraint { Operator = "fulladdress", Value = fullAddress }; var timeConstraintList = new List <Models.Constraint> { timeConstraint1, timeConstraint2 }; var locationConstraintList = new List <Models.Constraint> { locationConstraint1, locationConstraint2, locationConstraint3, locationConstraint4 }; List <DimensionView> dimensions = new List <DimensionView> { new DimensionView { Label = "Time", Interval = true, ConstraintList = timeConstraintList }, new DimensionView { Label = "Location", Interval = true, ConstraintList = locationConstraintList } }; await Navigation.PushAsync(new CreateSharingSpaceBPage(sharingSpace, dimensions)); }