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 = ""; }); }
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); }); }
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"); }); }