示例#1
0
        public MeetingLabelItemDataCreatePageViewModel(INavigationService navigationService) : base(navigationService)
        {
            _restService     = new RestService();
            _operateDateTime = new OperateDateTime();

            _createMeetingLabelItemValidation = new CreateMeetingLabelItemValidation();
            _tokenCheckValidation             = new TokenCheckValidation(_restService);
            _applicationProperties            = new ApplicationProperties();
            _meetingLabelItemDatas            = new ObservableCollection <MeetingLabelItemData>();
            _createMeetingLabelItemParam      = new CreateMeetingLabelItemParam();

            _additionalMeetingLabelItemDatas = new List <MeetingLabelItemData>();

            //会議の各ラベルに項目(Item)を追加するコマンド
            CreateMeetingLabelItemCommand = new DelegateCommand(async() =>
            {
                //項目入力値のバリデーション
                CreateMeetingLabelItemParam = _createMeetingLabelItemValidation.InputValidate(InputLabelItemName);
                if (CreateMeetingLabelItemParam.HasError == true)
                {
                    return;
                }



                //uid取得の際のtoken情報照合
                TokenCheckParam = await _tokenCheckValidation.Validate(_applicationProperties.GetFromProperties <TokenData>("token"));

                var inputUid = 0;

                if (TokenCheckParam.HasError == true)
                {
                    return;
                }
                else
                {
                    //token情報照合に成功したらuid取得
                    GetUserParam = await _restService.GetUserDataAsync(UserConstants.OpenUserEndPoint, _applicationProperties.GetFromProperties <string>("userId"));

                    if (GetUserParam.HasError == true)
                    {
                        return;
                    }
                    else
                    {
                        //userDataの取得に成功したらuidを代入
                        var userData = GetUserParam.User;
                        inputUid     = userData.Id;
                    }
                }
                var meetingLabelItemData = new MeetingLabelItemData(TargetMeetingLabel.Id, inputUid, InputLabelItemName);
                MeetingLabelItemDatas.Add(meetingLabelItemData);
                AdditionalMeetingLabelItemDatas.Add(meetingLabelItemData);

                InputLabelItemName = "";
            });
        }
示例#2
0
        public ParticipantData(int uid, int mid)
        {
            var operateDateTime = new OperateDateTime();

            this.Uid            = uid;
            this.Mid            = mid;
            this.LastUpdateTime = operateDateTime.CurrentDateTime;
            this.isDeleted      = false;
            LabelItems          = new List <MeetingLabelData>();
        }
        //更新処理
        public async void Reload()
        {
            LoadingData  = true;
            _restService = new RestService();

            //対象の会議データ取得
            GetMeetingParam = await _restService.GetMeetingDataAsync(MeetingConstants.OpenMeetingEndPoint, TargetMeetingId);

            TargetMeetingData = GetMeetingParam.MeetingData;

            //会議が終了状態でないかどうか判定
            if (GetMeetingParam.MeetingData.IsVisible == false)
            {
                var p = new NavigationParameters
                {
                    { "ErrorPageType", ErrorPageType.FinishedMeeting }
                };
                //終了している会議なのでエラー画面に飛ばす
                await _navigationService.NavigateAsync("/ErrorTemplatePage", p);
            }

            //ParticipantDBに対する最終更新時刻とIsDeleted状態の更新
            //ParticipantDBに既にユーザーが居ないかチェック
            CheckParticipantParam = await _restService.CheckParticipantDataAsync(MeetingConstants.OPENMeetingParticipantEndPoint, GetUserParam.User.Id, TargetMeetingData.Id);

            //ユーザーが既にParticipantDBに存在していた場合
            if (CheckParticipantParam.IsSuccessed == true)
            {
                //ParticipantsDBに存在するが、論理削除済の場合
                if (CheckParticipantParam.Participant.isDeleted == true)
                {
                    CheckParticipantParam.NoExistUser = true;

                    await _navigationService.NavigateAsync("MeetingDataTopPage");
                }
                else
                //ParticipantsDBに存在するが、論理削除がされていない場合
                {
                    var operateDateTime = new OperateDateTime();
                    CheckParticipantParam.Participant.LastUpdateTime = operateDateTime.CurrentDateTime;
                    var updateParticipant = CheckParticipantParam.Participant;

                    UpdateParticipantParam = await _restService.UpdateParticipantDataAsync(MeetingConstants.OPENMeetingParticipantEndPoint, updateParticipant);
                }
            }
            //既にユーザーが退室済の場合は更新エラーを出す
            else
            {
                CheckParticipantParam.NoExistUser = true;
                await _navigationService.NavigateAsync("MeetingDataTopPage");
            }

            LoadingData = false;
        }
        public async Task <ObservableCollection <ParticipantData> > GetParticipants()
        {
            var mid = TargetMeetingData.Id;

            //participantsDBの全データ読み込み (midで指定して全件取得)
            GetParticipantsParam = await _restService.GetParticipantsDataAsync(MeetingConstants.OPENMeetingParticipantEndPoint, mid);

            //退室済みのユーザーを表示させない
            GetParticipantsParam.Participants.RemoveAll(p => p.isDeleted == true);

            var getParticipants = new ObservableCollection <ParticipantData>();
            var operateDateTime = new OperateDateTime();

            foreach (ParticipantData p in GetParticipantsParam.Participants)
            {
                var diffTime = operateDateTime.CurrentDateTime - p.LastUpdateTime;
                if (p.isDeleted == false && diffTime.TotalMinutes < 3)
                {
                    getParticipants.Add(p);
                }
            }

            return(getParticipants);
        }
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="navigationService"></param>
        public MeetingDataTopPageViewModel(INavigationService navigationService) : base(navigationService)
        {
            _navigationService = navigationService;

            _restService           = new RestService();
            _applicationProperties = new ApplicationProperties();
            _operateDateTime       = new OperateDateTime();

            _tokenCheckParam = new TokenCheckParam();


            //アプリ使用者のユーザーIDの取得
            MyUserId = _applicationProperties.GetFromProperties <string>("userId");


            //会議の削除ボタンが押されたときの処理
            DeleteMeetingCommand = new DelegateCommand <object>(async id =>
            {
                //管理者が操作する会議終了処理
                var select = await Application.Current.MainPage.DisplayAlert("警告", "会議を削除してもよろしいでしょうか?", "OK", "キャンセル");

                if (select)
                {
                    var mid = Convert.ToInt32(id);

                    //対象となる会議情報を1件取得
                    var getMeetingParam   = new GetMeetingParam();
                    getMeetingParam       = await _restService.GetMeetingDataAsync(MeetingConstants.OpenMeetingEndPoint, mid);
                    var updateMeetingData = getMeetingParam.MeetingData;

                    //フラグをfalseに変更
                    updateMeetingData.IsVisible = false;
                    await _restService.UpdateMeetingDataAsync(MeetingConstants.OpenMeetingEndPoint, updateMeetingData);

                    //会議情報再取得
                    GetMeetingsParam = await _restService.GetMeetingsDataAsync(MeetingConstants.OpenMeetingEndPoint, MyUserId);
                    Meetings         = GetMeetingsParam.Meetings;
                }
                else
                {
                    return;
                }
            });

            //会議新規作成ページに遷移するコマンド
            NavigateMeetingCreatePage = new DelegateCommand(async() =>
            {
                //会議情報トップページに遷移する
                await _navigationService.NavigateAsync("/NavigationPage/MeetingDataCreatePage");
            });

            //会議出席ページに遷移するコマンド
            NavigateMeetingAttendPage = new DelegateCommand <object>(async id =>
            {
                var mid = Convert.ToInt32(id);

                //指定の会議の情報をCommandParameterで受け取り、会議id(mid)を取得する
                var getMeetingParam = new GetMeetingParam();
                getMeetingParam     = await _restService.GetMeetingDataAsync(MeetingConstants.OpenMeetingEndPoint, mid);

                var p = new NavigationParameters
                {
                    { "mid", getMeetingParam.MeetingData.Id }
                };

                //会議情報トップページに遷移する
                await _navigationService.NavigateAsync("MeetingAttendPage", p);
            });
        }
示例#6
0
        public MeetingAttendPageViewModel(INavigationService navigationService) : base(navigationService)
        {
            _navigationService     = navigationService;
            _restService           = new RestService();
            _operateDateTime       = new OperateDateTime();
            _applicationProperties = new ApplicationProperties();

            _createMeetingLabelItemParam = new CreateMeetingLabelItemParam();
            _attendMeetingParam          = new AttendMeetingParam();
            _deleteMeetingLabelItemParam = new DeleteMeetingLabelItemParam();

            _createMeetingLabelItemValidation = new CreateMeetingLabelItemValidation();
            _tokenCheckValidation             = new TokenCheckValidation(_restService);
            _attendMeetingValidation          = new AttendMeetingValidation();


            //ラベルに関する項目を追加するページへ遷移するコマンド
            NavigateMeetingLabelItemDataCreatePage = new DelegateCommand <object>((meetingLabelData) =>
            {
                var targetMeetingLabelData = (MeetingLabelData)(meetingLabelData);

                var p = new NavigationParameters
                {
                    { "meetingLabelData", targetMeetingLabelData },
                };
                _navigationService.NavigateAsync("MeetingLabelItemDataCreatePage", p);
            });


            //会議に入室するコマンド
            EnterMeetingCommand = new DelegateCommand(async() =>
            {
                //バリデーション
                AttendMeetingParam = _attendMeetingValidation.ButtonPushedValidate(new List <MeetingLabelData>(TargetMeetingLabels));


                if (AttendMeetingParam.IsSuccessed == true)
                {
                    GetUserParam = await _restService.GetUserDataAsync(UserConstants.OpenUserEndPoint, _applicationProperties.GetFromProperties <string>("userId"));

                    var mid = GetMeetingParam.MeetingData.Id;
                    var uid = GetUserParam.User.Id;

                    //ParticipantDBに既にユーザーが居ないかチェック
                    CheckParticipantParam = await _restService.CheckParticipantDataAsync(MeetingConstants.OPENMeetingParticipantEndPoint, uid, mid);

                    //ユーザーが既にParticipantDBに存在していた場合
                    if (CheckParticipantParam.IsSuccessed == true)
                    {
                        //会議参加済みかつisDeletedがfalseの場合は最終更新時刻のみ更新し遷移する
                        if (CheckParticipantParam.Participant.isDeleted == false)
                        {
                            var operateDateTime = new OperateDateTime();
                            CheckParticipantParam.Participant.LastUpdateTime = operateDateTime.CurrentDateTime;
                            var updateParticipant = CheckParticipantParam.Participant;
                            await _restService.UpdateParticipantDataAsync(MeetingConstants.OPENMeetingParticipantEndPoint, updateParticipant);

                            var p = new NavigationParameters
                            {
                                { "mid", GetMeetingParam.MeetingData.Id }
                            };
                            await _navigationService.NavigateAsync("MeetingExecuteTopPage", p);
                        }
                        else
                        //参加済みかつ論理削除済みの場合はisDeletedをtrue→falseにして再入室
                        {
                            var operateDateTime = new OperateDateTime();
                            CheckParticipantParam.Participant.isDeleted      = false;
                            CheckParticipantParam.Participant.LastUpdateTime = operateDateTime.CurrentDateTime;
                            var updateParticipant = CheckParticipantParam.Participant;

                            await _restService.UpdateParticipantDataAsync(MeetingConstants.OPENMeetingParticipantEndPoint, updateParticipant);

                            var p = new NavigationParameters
                            {
                                { "mid", GetMeetingParam.MeetingData.Id }
                            };
                            await _navigationService.NavigateAsync("MeetingExecuteTopPage", p);
                        }
                    }
                    //ParticipantDBに該当者が居なければ追加
                    else
                    {
                        CreateParticipateParam = await _restService.CreateParticipateDataAsync(MeetingConstants.OPENMeetingParticipantEndPoint, uid, mid);

                        if (CreateParticipateParam.IsSuccessed == true)
                        {
                            var p = new NavigationParameters
                            {
                                { "mid", GetMeetingParam.MeetingData.Id }
                            };
                            await _navigationService.NavigateAsync("MeetingExecuteTopPage", p);
                        }
                    }
                }
            });

            //会議入室画面から退室するコマンド
            ExitMeetingCommand = new DelegateCommand(async() =>
            {
                //TargetMeetingLabelsが所持しているItemsを削除する
                foreach (MeetingLabelData l in TargetMeetingLabels)
                {
                    foreach (MeetingLabelItemData i in l.MeetingLabelItemDatas)
                    {
                        DeleteMeetingLabelItemParam = await _restService.DeleteMeetingLabelItemDataAsync(MeetingConstants.OPENMeetingLabelItemEndPoint, i.Id);
                    }
                }

                await _navigationService.NavigateAsync("/NavigationPage/MeetingDataTopPage");
            });
        }