Esempio n. 1
0
        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;
            }
        }
Esempio n. 3
0
        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));
        }