Esempio n. 1
0
        /// <summary>
        /// 取得車隊資訊
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>Tuple(TeamInfoDto, string)</returns>
        public async Task <Tuple <TeamInfoDto, string> > GetTeamInfo(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, false, true, false, false, false, false);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Get Team Info Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID}");
                    return(Tuple.Create <TeamInfoDto, string>(null, "取得車隊資訊失敗."));
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return(Tuple.Create <TeamInfoDto, string>(null, "車隊不存在."));
                }

                if (teamData.TeamBlacklistIDs.Contains(teamCommand.TargetID))
                {
                    return(Tuple.Create <TeamInfoDto, string>(null, "會員已被車隊設為黑名單."));
                }

                TeamInfoDto teamInfo = await this.OnTransformTeamDataNews(teamData, teamCommand.TargetID);

                return(Tuple.Create(teamInfo, string.Empty));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Get Team Info Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID}\n{ex}");
                return(Tuple.Create <TeamInfoDto, string>(null, "取得車隊資訊發生錯誤."));
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> Post(TeamCommandDto teamCommand)
        {
            try
            {
                string result = await this.announcementService.DeleteAnnouncementListOfTeam(teamCommand);

                if (string.IsNullOrEmpty(result))
                {
                    result = await this.eventService.DeleteEventListOfTeam(teamCommand);

                    if (string.IsNullOrEmpty(result))
                    {
                        result = await this.teamService.DisbandTeam(teamCommand);

                        if (string.IsNullOrEmpty(result))
                        {
                            return(Ok("解散車隊成功."));
                        }
                    }
                }

                return(BadRequest(result));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Disband Team Error >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID}\n{ex}");
                return(BadRequest("解散車隊發生錯誤."));
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 編輯活動
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>string</returns>
        public async Task <string> EditEvent(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, false, true, false, false, false, true);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Edit Event Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventInfo:{JsonConvert.SerializeObject(teamCommand.EventInfo)}");
                    return("編輯活動失敗.");
                }

                if (string.IsNullOrEmpty(teamCommand.EventInfo.EventID))
                {
                    return("活動編號無效.");
                }

                EventData eventData = await this.eventRepository.GetEventData(teamCommand.EventInfo.EventID);

                if (eventData == null)
                {
                    return("活動不存在.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                bool verifyEventExaminerAuthorityResult = this.VerifyEventExaminerAuthority(teamData, eventData, teamCommand.TargetID);
                if (!verifyEventExaminerAuthorityResult)
                {
                    this.logger.LogError($"Edit Event Fail For Verify Event Examiner Authority >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventID:{teamCommand.EventInfo.EventID}");
                    return("編輯活動失敗.");
                }

                string updateEventDataHandlerReault = this.UpdateEventDataHandler(teamCommand.EventInfo, eventData);
                if (!string.IsNullOrEmpty(updateEventDataHandlerReault))
                {
                    return(updateEventDataHandlerReault);
                }

                bool updateEventDataResult = await this.eventRepository.UpdateEventData(eventData);

                if (!updateEventDataResult)
                {
                    return("活動資料更新失敗.");
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Edit Event Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventInfo:{JsonConvert.SerializeObject(teamCommand.EventInfo)}\n{ex}");
                return("編輯活動發生錯誤.");
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 邀請加入車隊
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>string</returns>
        public async Task <string> InviteJoinTeam(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, true, true, false, false, false, false);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Invite Join Team Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}");
                    return("邀請加入車隊失敗.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                if (teamData.TeamApplyForJoinIDs.Contains(teamCommand.TargetID))
                {
                    return("該會員已提出申請加入請求.");
                }

                bool verifyJoinTeamQualificationResult = this.VerifyJoinTeamQualification(teamData, teamCommand.TargetID);
                if (!verifyJoinTeamQualificationResult)
                {
                    return("邀請加入車隊失敗.");
                }

                bool verifyTeamExaminerAuthorityResult = this.VerifyTeamExaminerAuthority(teamData, teamCommand.ExaminerID, false, true, teamCommand.TargetID);
                if (!verifyTeamExaminerAuthorityResult)
                {
                    this.logger.LogError($"Invite Join Team Fail For Verify Team Examiner Authority >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}");
                    return("邀請加入車隊失敗.");
                }

                bool updateTeamInviteJoinIDsResult = Utility.UpdateListHandler(teamData.TeamInviteJoinIDs, teamCommand.TargetID, true);
                if (updateTeamInviteJoinIDsResult)
                {
                    bool result = await this.teamRepository.UpdateTeamInviteJoinIDs(teamData.TeamID, teamData.TeamInviteJoinIDs);

                    if (!result)
                    {
                        return("邀請加入名單資料更新失敗.");
                    }
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Invite Join Team Error >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}\n{ex}");
                return("邀請加入車隊發生錯誤.");
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 更新車隊隊長
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>string</returns>
        public async Task <string> UpdateTeamLeader(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, true, true, false, false, false, false);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Update Team Leader Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}");
                    return("更新車隊隊長失敗.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                bool verifyTeamExaminerAuthorityResult = this.VerifyTeamExaminerAuthority(teamData, teamCommand.ExaminerID, true, true, teamCommand.TargetID);
                if (!verifyTeamExaminerAuthorityResult)
                {
                    this.logger.LogError($"Update Team Leader Fail For Verify Team Examiner Authority >>> TeamID:{teamCommand.TeamID}  ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}");
                    return("更新車隊隊長失敗.");
                }

                if (!teamData.TeamPlayerIDs.Contains(teamCommand.TargetID))
                {
                    return("會員未加入車隊.");
                }

                bool isMultipleTeam = await this.teamRepository.VerifyTeamDataByTeamLeaderID(teamCommand.TargetID);

                if (isMultipleTeam)
                {
                    return("無法指定其他車隊隊長.");
                }

                Utility.UpdateListHandler(teamData.TeamPlayerIDs, teamData.TeamLeaderID, true);
                Utility.UpdateListHandler(teamData.TeamPlayerIDs, teamCommand.TargetID, false);
                teamData.TeamLeaderID = teamCommand.TargetID;
                bool updateTeamDataResult = await this.teamRepository.UpdateTeamData(teamData);

                if (!updateTeamDataResult)
                {
                    return("車隊資料更新失敗.");
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Update Team Leader Error >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}\n{ex}");
                return("更新車隊隊長發生錯誤.");
            }
        }
Esempio n. 6
0
        /// <summary>
        /// 加入活動
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>string</returns>
        public async Task <string> JoinEvent(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, false, true, false, false, false, true);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Join Event Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventID:{(teamCommand.EventInfo != null ? teamCommand.EventInfo.EventID : "Null")}");
                    return("加入活動失敗.");
                }

                if (string.IsNullOrEmpty(teamCommand.EventInfo.EventID))
                {
                    return("活動編號無效.");
                }

                EventData eventData = await this.eventRepository.GetEventData(teamCommand.EventInfo.EventID);

                if (eventData == null)
                {
                    return("活動不存在.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                if (!teamData.TeamLeaderID.Equals(teamCommand.TargetID) && !teamData.TeamPlayerIDs.Contains(teamCommand.TargetID))
                {
                    return("該會員非車隊隊員.");
                }

                bool updateJoinMemberListResult = Utility.UpdateListHandler(eventData.JoinMemberList, teamCommand.TargetID, true);
                if (updateJoinMemberListResult)
                {
                    bool result = await this.eventRepository.UpdateJoinMemberList(eventData.EventID, eventData.JoinMemberList);

                    if (!result)
                    {
                        return("活動參加名單資料更新失敗.");
                    }
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Join Event Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventID:{(teamCommand.EventInfo != null ? teamCommand.EventInfo.EventID : "Null")}\n{ex}");
                return("加入活動發生錯誤.");
            }
        }
Esempio n. 7
0
        /// <summary>
        /// 取得活動詳細資訊
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>Tuple(EventDetailInfoDto, string)</returns>
        public async Task <Tuple <EventDetailInfoDto, string> > GetEventDetailInfo(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, false, true, false, false, false, true);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Get Event Detail Info Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventID:{(teamCommand.EventInfo != null ? teamCommand.EventInfo.EventID : "Null")}");
                    return(Tuple.Create <EventDetailInfoDto, string>(null, "取得活動詳細資訊失敗."));
                }

                if (string.IsNullOrEmpty(teamCommand.EventInfo.EventID))
                {
                    return(Tuple.Create <EventDetailInfoDto, string>(null, "活動編號無效."));
                }

                EventData eventData = await this.eventRepository.GetEventData(teamCommand.EventInfo.EventID);

                if (eventData == null)
                {
                    return(Tuple.Create <EventDetailInfoDto, string>(null, "活動不存在."));
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return(Tuple.Create <EventDetailInfoDto, string>(null, "車隊不存在."));
                }

                if (!teamData.TeamLeaderID.Equals(teamCommand.TargetID) && !teamData.TeamPlayerIDs.Contains(teamCommand.TargetID))
                {
                    return(Tuple.Create <EventDetailInfoDto, string>(null, "該會員非車隊隊員."));
                }

                bool updateHaveSeenMemberIDsResult = Utility.UpdateListHandler(eventData.HaveSeenMemberIDs, teamCommand.TargetID, true);
                if (updateHaveSeenMemberIDsResult)
                {
                    //// 無須對【已閱活動名單資料】作審查,不應影響原功能
                    bool result = await this.eventRepository.UpdateHaveSeenMemberIDs(teamData.TeamID, eventData.HaveSeenMemberIDs);
                }

                EventDetailInfoDto eventDetailInfo = this.mapper.Map <EventDetailInfoDto>(eventData);
                eventDetailInfo.TeamName  = teamData.TeamName;
                eventDetailInfo.TeamPhoto = teamData.TeamPhoto;
                return(Tuple.Create(eventDetailInfo, string.Empty));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Get Event Detail Info Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventID:{(teamCommand.EventInfo != null ? teamCommand.EventInfo.EventID : "Null")}\n{ex}");
                return(Tuple.Create <EventDetailInfoDto, string>(null, "取得活動詳細資訊發生錯誤."));
            }
        }
Esempio n. 8
0
        /// <summary>
        /// 刪除活動
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>string</returns>
        public async Task <string> DeleteEvent(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, false, true, false, false, false, true);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Delete Event Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventID:{(teamCommand.EventInfo != null ? teamCommand.EventInfo.EventID : "Null")}");
                    return("刪除活動失敗.");
                }

                if (string.IsNullOrEmpty(teamCommand.EventInfo.EventID))
                {
                    return("活動編號無效.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                EventData eventData = await this.eventRepository.GetEventData(teamCommand.EventInfo.EventID);

                if (eventData == null)
                {
                    return("活動不存在.");
                }

                bool verifyEventExaminerAuthorityResult = this.VerifyEventExaminerAuthority(teamData, eventData, teamCommand.TargetID);
                if (!verifyEventExaminerAuthorityResult)
                {
                    this.logger.LogError($"Delete Event Fail For Verify Event Examiner Authority >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventID:{teamCommand.EventInfo.EventID}");
                    return("刪除活動失敗.");
                }

                bool deleteEventDataResult = await this.eventRepository.DeleteEventData(teamCommand.EventInfo.EventID);

                if (!deleteEventDataResult)
                {
                    return("刪除活動失敗.");
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Delete Event Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventID:{(teamCommand.EventInfo != null ? teamCommand.EventInfo.EventID : "Null")}\n{ex}");
                return("刪除活動發生錯誤.");
            }
        }
Esempio n. 9
0
        /// <summary>
        /// 邀請多人加入車隊
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>string</returns>
        public async Task <string> InviteManyJoinTeam(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, true, false, true, false, false, false);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Invite Many Join Team Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetIDs:{JsonConvert.SerializeObject(teamCommand.TargetIDs)}");
                    return("邀請多人加入車隊失敗.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                bool verifyTeamExaminerAuthorityResult = this.VerifyTeamExaminerAuthority(teamData, teamCommand.ExaminerID, false, false, string.Empty);
                if (!verifyTeamExaminerAuthorityResult)
                {
                    this.logger.LogError($"Invite Many Join Team Fail For Verify Team Examiner Authority >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID}");
                    return("邀請多人加入車隊失敗.");
                }

                IEnumerable <string> teamApplyForJoinIDs = teamData.TeamApplyForJoinIDs;
                IEnumerable <string> targetIDs           = teamCommand.TargetIDs;
                IEnumerable <string> validTargetIDs      = targetIDs.Where(targetID => this.VerifyJoinTeamQualification(teamData, targetID) && !teamApplyForJoinIDs.Contains(targetID));
                if (!validTargetIDs.Any())
                {
                    return("無會員名單可邀請加入車隊.");
                }

                bool updateTeamInviteJoinIDsResult = Utility.UpdateListHandler(teamData.TeamInviteJoinIDs, validTargetIDs, true);
                if (updateTeamInviteJoinIDsResult)
                {
                    bool result = await this.teamRepository.UpdateTeamInviteJoinIDs(teamData.TeamID, teamData.TeamInviteJoinIDs);

                    if (!result)
                    {
                        return("邀請加入名單資料更新失敗.");
                    }
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Invite Many Join Team Error >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetIDs:{JsonConvert.SerializeObject(teamCommand.TargetIDs)}\n{ex}");
                return("邀請多人加入車隊發生錯誤.");
            }
        }
Esempio n. 10
0
        /// <summary>
        /// 發佈公告
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>string</returns>
        public async Task <string> PublishAnnouncement(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, true, false, false, false, true, false);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Publish Announcement Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} AnnouncementInfo:{JsonConvert.SerializeObject(teamCommand.AnnouncementInfo)}");
                    return("發佈公告失敗.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                bool verifyTeamExaminerAuthorityResult = this.VerifyTeamExaminerAuthority(teamData, teamCommand.ExaminerID, false, false, string.Empty);
                if (!verifyTeamExaminerAuthorityResult)
                {
                    this.logger.LogError($"Publish Announcement Fail For Verify Team Examiner Authority >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}");
                    return("發佈公告失敗.");
                }

                Tuple <AnnouncementData, string> createAnnouncementDataResult = this.CreateAnnouncementData(teamCommand.TeamID, teamCommand.ExaminerID, teamCommand.AnnouncementInfo);
                if (!string.IsNullOrEmpty(createAnnouncementDataResult.Item2))
                {
                    return(createAnnouncementDataResult.Item2);
                }

                AnnouncementData announcementData = createAnnouncementDataResult.Item1;
                bool             isSuccess        = await this.announcementRepository.CreateAnnouncementData(announcementData);

                if (!isSuccess)
                {
                    return("發佈公告失敗.");
                }

                //// 無須對【已閱公告名單資料】作審查,不應影響原功能
                bool updateHaveSeenAnnouncementMemberIDsResult = await this.teamRepository.UpdateHaveSeenAnnouncementMemberIDs(teamData.TeamID, new List <string>());

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Publish Announcement Error >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} AnnouncementInfo:{JsonConvert.SerializeObject(teamCommand.AnnouncementInfo)}\n{ex}");
                return("發佈公告發生錯誤.");
            }
        }
Esempio n. 11
0
        /// <summary>
        /// 申請加入車隊
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>string</returns>
        public async Task <string> ApplyForJoinTeam(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, false, true, false, false, false, false);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Apply For Join Team Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID}");
                    return("申請加入車隊失敗.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                if (teamData.TeamExamineStatus == (int)TeamExamineStatusType.Close)
                {
                    return(await this.JoinTeam(teamCommand, false));
                }

                bool verifyJoinTeamQualificationResult = this.VerifyJoinTeamQualification(teamData, teamCommand.TargetID);
                if (!verifyJoinTeamQualificationResult)
                {
                    return("申請加入車隊失敗.");
                }

                bool updateTeamPlayerIDsResult     = Utility.UpdateListHandler(teamData.TeamApplyForJoinIDs, teamCommand.TargetID, true);
                bool updateTeamInviteJoinIDsResult = Utility.UpdateListHandler(teamData.TeamInviteJoinIDs, teamCommand.TargetID, false);
                if (updateTeamPlayerIDsResult || updateTeamInviteJoinIDsResult)
                {
                    bool updateTeamDataResult = await this.teamRepository.UpdateTeamData(teamData);

                    if (!updateTeamDataResult)
                    {
                        return("車隊資料更新失敗.");
                    }
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Apply For Join Team Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID}\n{ex}");
                return("申請加入車隊發生錯誤.");
            }
        }
Esempio n. 12
0
        /// <summary>
        /// 更新車隊副隊長
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <param name="isAdd">isAdd</param>
        /// <returns>string</returns>
        public async Task <string> UpdateTeamViceLeader(TeamCommandDto teamCommand, bool isAdd)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, true, true, false, false, false, false);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Update Team Vice Leader Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}");
                    return("更新車隊副隊長失敗.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                bool verifyTeamExaminerAuthorityResult = this.VerifyTeamExaminerAuthority(teamData, teamCommand.ExaminerID, true, true, teamCommand.TargetID);
                if (!verifyTeamExaminerAuthorityResult)
                {
                    this.logger.LogError($"Update Team Vice Leader Fail For Verify Team Examiner Authority >>> TeamID:{teamCommand.TeamID}  ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}");
                    return("更新車隊副隊長失敗.");
                }

                if (isAdd && !teamData.TeamPlayerIDs.Contains(teamCommand.TargetID))
                {
                    return("會員未加入車隊.");
                }

                bool updateTeamViceLeaderIDsResult = Utility.UpdateListHandler(teamData.TeamViceLeaderIDs, teamCommand.TargetID, isAdd);
                if (updateTeamViceLeaderIDsResult)
                {
                    bool result = await this.teamRepository.UpdateTeamViceLeaders(teamData.TeamID, teamData.TeamViceLeaderIDs);

                    if (!result)
                    {
                        return("車隊副隊長名單資料更新失敗.");
                    }
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Update Team Vice Leader Error >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}\n{ex}");
                return("更新車隊副隊長發生錯誤.");
            }
        }
Esempio n. 13
0
        /// <summary>
        /// 離開車隊
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>string</returns>
        public async Task <string> LeaveTeam(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, false, true, false, false, false, false);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Leave Team Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID}");
                    return("離開車隊失敗.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                if (teamCommand.TargetID.Equals(teamData.TeamLeaderID))
                {
                    return("請先移交隊長職務.");
                }

                if (!teamData.TeamPlayerIDs.Contains(teamCommand.TargetID))
                {
                    return("會員未加入車隊.");
                }

                bool updateTeamPlayerIDsResult     = Utility.UpdateListHandler(teamData.TeamPlayerIDs, teamCommand.TargetID, false);
                bool updateTeamViceLeaderIDsResult = Utility.UpdateListHandler(teamData.TeamViceLeaderIDs, teamCommand.TargetID, false);
                if (updateTeamPlayerIDsResult || updateTeamViceLeaderIDsResult)
                {
                    bool updateTeamDataResult = await this.teamRepository.UpdateTeamData(teamData);

                    if (!updateTeamDataResult)
                    {
                        return("車隊資料更新失敗.");
                    }
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Leave Team Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID}\n{ex}");
                return("離開車隊發生錯誤.");
            }
        }
Esempio n. 14
0
        /// <summary>
        /// 車隊編輯
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>Tuple(TeamInfoDto, string)</returns>
        public async Task <Tuple <TeamInfoDto, string> > EditData(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, true, false, false, true, false, false);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Edit Data Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TeamInfo:{JsonConvert.SerializeObject(teamCommand.TeamInfo)}");
                    return(Tuple.Create <TeamInfoDto, string>(null, "車隊編輯失敗."));
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return(Tuple.Create <TeamInfoDto, string>(null, "車隊不存在."));
                }

                bool verifyTeamExaminerAuthorityResult = this.VerifyTeamExaminerAuthority(teamData, teamCommand.ExaminerID, false, false, string.Empty);
                if (!verifyTeamExaminerAuthorityResult)
                {
                    this.logger.LogError($"Edit Data Fail For Verify Team Examiner Authority >>> TeamID:{teamCommand.TeamID}  ExaminerID:{teamCommand.ExaminerID}");
                    return(Tuple.Create <TeamInfoDto, string>(null, "車隊編輯失敗."));
                }

                string updateTeamDataHandlerReault = await this.UpdateTeamDataHandler(teamCommand.TeamInfo, teamData);

                if (!string.IsNullOrEmpty(updateTeamDataHandlerReault))
                {
                    return(Tuple.Create <TeamInfoDto, string>(null, updateTeamDataHandlerReault));
                }

                bool updateTeamDataResult = await this.teamRepository.UpdateTeamData(teamData);

                if (!updateTeamDataResult)
                {
                    return(Tuple.Create <TeamInfoDto, string>(null, "車隊資料更新失敗."));
                }

                return(Tuple.Create(this.mapper.Map <TeamInfoDto>(teamData), string.Empty));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Edit Data Error >>> Data:{JsonConvert.SerializeObject(teamCommand)}\n{ex}");
                return(Tuple.Create <TeamInfoDto, string>(null, "車隊編輯發生錯誤."));
            }
        }
Esempio n. 15
0
        /// <summary>
        /// 建立活動
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>string</returns>
        public async Task <string> CreateEvent(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, false, true, false, false, false, true);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Create Event Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventInfo:{JsonConvert.SerializeObject(teamCommand.EventInfo)}");
                    return("建立活動失敗.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                if (!teamData.TeamLeaderID.Equals(teamCommand.TargetID) && !teamData.TeamPlayerIDs.Contains(teamCommand.TargetID))
                {
                    return("該會員非車隊隊員.");
                }

                Tuple <EventData, string> createEventDataResult = await this.CreateEventData(teamData.TeamID, teamData.TeamName, teamCommand.TargetID, teamCommand.EventInfo);

                if (!string.IsNullOrEmpty(createEventDataResult.Item2))
                {
                    return(createEventDataResult.Item2);
                }

                EventData eventData = createEventDataResult.Item1;
                bool      isSuccess = await this.eventRepository.CreateEventData(eventData);

                if (!isSuccess)
                {
                    return("建立活動失敗.");
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Create Event Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventInfo:{JsonConvert.SerializeObject(teamCommand.EventInfo)}\n{ex}");
                return("建立活動發生錯誤.");
            }
        }
Esempio n. 16
0
        /// <summary>
        /// 強制離開車隊
        /// </summary>
        /// <param name="teamCommand">teamCommand</param>
        /// <returns>string</returns>
        public async Task <string> ForceLeaveTeam(TeamCommandDto teamCommand)
        {
            try
            {
                bool verifyTeamCommandResult = this.VerifyTeamCommand(teamCommand, true, true, false, false, false, false);
                if (!verifyTeamCommandResult)
                {
                    this.logger.LogError($"Force Leave Team Fail For Verify TeamCommand >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}");
                    return("強制離開車隊失敗.");
                }

                TeamData teamData = await this.teamRepository.GetTeamData(teamCommand.TeamID);

                if (teamData == null)
                {
                    return("車隊不存在.");
                }

                bool verifyTeamExaminerAuthorityResult = this.VerifyTeamExaminerAuthority(teamData, teamCommand.ExaminerID, false, true, teamCommand.TargetID);
                if (!verifyTeamExaminerAuthorityResult)
                {
                    this.logger.LogError($"Force Leave Team Fail For Verify Team Examiner Authority >>> TeamID:{teamCommand.TeamID}  ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}");
                    return("強制離開車隊失敗.");
                }

                bool updateTeamPlayerIDsResult     = Utility.UpdateListHandler(teamData.TeamPlayerIDs, teamCommand.TargetID, false);
                bool updateTeamViceLeaderIDsResult = Utility.UpdateListHandler(teamData.TeamViceLeaderIDs, teamCommand.TargetID, false);
                if (updateTeamPlayerIDsResult || updateTeamViceLeaderIDsResult)
                {
                    bool updateTeamDataResult = await this.teamRepository.UpdateTeamData(teamData);

                    if (!updateTeamDataResult)
                    {
                        return("車隊資料更新失敗.");
                    }
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Force Leave Team Error >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}\n{ex}");
                return("強制離開車隊發生錯誤.");
            }
        }
Esempio n. 17
0
        public async Task <IActionResult> Join(TeamCommandDto teamCommand)
        {
            try
            {
                string result = await this.interactiveService.ApplyForJoinTeam(teamCommand);

                if (string.IsNullOrEmpty(result))
                {
                    return(Ok("申請加入車隊成功."));
                }

                return(BadRequest(result));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Apply For Join Team Error >>> TemaID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID}\n{ex}");
                return(BadRequest("申請加入車隊發生錯誤."));
            }
        }
Esempio n. 18
0
        public async Task <IActionResult> Get(TeamCommandDto teamCommand)
        {
            try
            {
                Tuple <IEnumerable <string>, string> result = await this.interactiveService.GetApplyForRequestList(teamCommand);

                if (string.IsNullOrEmpty(result.Item2))
                {
                    return(Ok(result.Item1));
                }

                return(BadRequest(result.Item2));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Get Apply For Request List Error >>> TemaID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID}\n{ex}");
                return(BadRequest("取得申請加入名單發生錯誤."));
            }
        }
        public async Task <IActionResult> Remove(TeamCommandDto teamCommand)
        {
            try
            {
                string result = await this.interactiveService.UpdateTeamViceLeader(teamCommand, false);

                if (string.IsNullOrEmpty(result))
                {
                    return(Ok("移除車隊副隊長成功."));
                }

                return(BadRequest(result));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Remove Team Vice Leader Error >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}\n{ex}");
                return(BadRequest("移除車隊副隊長發生錯誤."));
            }
        }
Esempio n. 20
0
        public async Task <IActionResult> Post(TeamCommandDto teamCommand)
        {
            try
            {
                Tuple <TeamInfoDto, string> result = await this.teamService.GetTeamInfo(teamCommand);

                if (string.IsNullOrEmpty(result.Item2))
                {
                    return(Ok(result.Item1));
                }

                return(BadRequest(result.Item2));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Get Team Info Error >>> TeamID:{teamCommand.TeamID}\n{ex}");
                return(BadRequest("搜尋車隊資訊列表發生錯誤."));
            }
        }
Esempio n. 21
0
        public async Task <IActionResult> Post(TeamCommandDto teamCommand)
        {
            try
            {
                string result = await this.interactiveService.ForceLeaveTeam(teamCommand);

                if (string.IsNullOrEmpty(result))
                {
                    return(Ok("強制離開車隊成功."));
                }

                return(BadRequest(result));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Force Leave Team Error >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} TargetID:{teamCommand.TargetID}\n{ex}");
                return(BadRequest("強制離開車隊發生錯誤."));
            }
        }
Esempio n. 22
0
        public async Task <IActionResult> Post(TeamCommandDto teamCommand)
        {
            try
            {
                Tuple <TeamInfoDto, string> result = await this.teamService.EditData(teamCommand);

                if (string.IsNullOrEmpty(result.Item2))
                {
                    return(Ok(result.Item1));
                }

                return(BadRequest(result.Item2));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Edit Data Error >>> Data:{JsonConvert.SerializeObject(teamCommand)}\n{ex}");
                return(BadRequest("車隊編輯發生錯誤."));
            }
        }
Esempio n. 23
0
        public async Task <IActionResult> Post(TeamCommandDto teamCommand)
        {
            try
            {
                Tuple <EventDetailInfoDto, string> result = await this.eventService.GetEventDetailInfo(teamCommand);

                if (string.IsNullOrEmpty(result.Item2))
                {
                    return(Ok(result.Item1));
                }

                return(BadRequest(result.Item2));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Get Event Detail Info Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventID:{(teamCommand.EventInfo != null ? teamCommand.EventInfo.EventID : "Null")}\n{ex}");
                return(BadRequest("取得活動詳細資訊發生錯誤."));
            }
        }
Esempio n. 24
0
        public async Task <IActionResult> Post(TeamCommandDto teamCommand)
        {
            try
            {
                string result = await this.eventService.DeleteEvent(teamCommand);

                if (string.IsNullOrEmpty(result))
                {
                    return(Ok("刪除活動成功."));
                }

                return(BadRequest(result));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Delete Event Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventID:{(teamCommand.EventInfo != null ? teamCommand.EventInfo.EventID : "Null")}\n{ex}");
                return(BadRequest("刪除活動發生錯誤."));
            }
        }
Esempio n. 25
0
        public async Task <IActionResult> Post(TeamCommandDto teamCommand)
        {
            try
            {
                string result = await this.eventService.CreateEvent(teamCommand);

                if (string.IsNullOrEmpty(result))
                {
                    return(Ok("建立活動成功."));
                }

                return(BadRequest(result));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Create Event Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID} EventInfo:{JsonConvert.SerializeObject(teamCommand.EventInfo)}\n{ex}");
                return(BadRequest("建立活動發生錯誤."));
            }
        }
Esempio n. 26
0
        public async Task <IActionResult> ManyJoin(TeamCommandDto teamCommand)
        {
            try
            {
                string result = await this.interactiveService.InviteManyJoinTeam(teamCommand);

                if (string.IsNullOrEmpty(result))
                {
                    return(Ok("邀請多人加入車隊成功."));
                }

                return(BadRequest(result));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Invite Many Join Team Error >>> TemaID:{teamCommand.TeamID} TargetIDs:{JsonConvert.SerializeObject(teamCommand.TargetIDs)}\n{ex}");
                return(BadRequest("邀請多人加入車隊發生錯誤."));
            }
        }
        public async Task <IActionResult> Post(TeamCommandDto teamCommand)
        {
            try
            {
                Tuple <IEnumerable <EventSimpleInfoDto>, string> result = await this.eventService.GetEventListOfTeam(teamCommand);

                if (string.IsNullOrEmpty(result.Item2))
                {
                    return(Ok(result.Item1));
                }

                return(BadRequest(result.Item2));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Get Event List Of Team Error >>> TeamID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID}\n{ex}");
                return(BadRequest("取得車隊活動列表發生錯誤."));
            }
        }
        public async Task <IActionResult> Delete(TeamCommandDto teamCommand)
        {
            try
            {
                string result = await this.announcementService.DeleteAnnouncement(teamCommand);

                if (string.IsNullOrEmpty(result))
                {
                    return(Ok("刪除公告成功."));
                }

                return(BadRequest(result));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Delete Announcement Error >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} AnnouncementID:{(teamCommand.AnnouncementInfo != null ? teamCommand.AnnouncementInfo.AnnouncementID : "Null")}\n{ex}");
                return(BadRequest("刪除公告發生錯誤."));
            }
        }
        public async Task <IActionResult> Edit(TeamCommandDto teamCommand)
        {
            try
            {
                string result = await this.announcementService.EditAnnouncement(teamCommand);

                if (string.IsNullOrEmpty(result))
                {
                    return(Ok("編輯公告成功."));
                }

                return(BadRequest(result));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Edit Announcement Error >>> TeamID:{teamCommand.TeamID} ExaminerID:{teamCommand.ExaminerID} AnnouncementInfo:{JsonConvert.SerializeObject(teamCommand.AnnouncementInfo)}\n{ex}");
                return(BadRequest("編輯公告發生錯誤."));
            }
        }
        public async Task <IActionResult> Get(TeamCommandDto teamCommand)
        {
            try
            {
                Tuple <IEnumerable <AnnouncementInfoDto>, string> result = await this.announcementService.GetAnnouncementList(teamCommand);

                if (string.IsNullOrEmpty(result.Item2))
                {
                    return(Ok(result.Item1));
                }

                return(BadRequest(result.Item2));
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Get Announcement List Error >>> TemaID:{teamCommand.TeamID} TargetID:{teamCommand.TargetID}\n{ex}");
                return(BadRequest("取得公告列表發生錯誤."));
            }
        }