Пример #1
0
        /// <summary>
        /// 同步點名資料
        /// </summary>
        /// <param name="requestData"></param>
        /// <returns></returns>
        public LogState SyncToiCan(Infrastructure.ViewModel.School.SignInSynchronize.SignSyncClientRequest requestData)
        {
            var memberService = new MemberService();
            var memberInfo    = memberService.TokenToMember(requestData.Token).Result;

            if (memberInfo == null)
            {
                return(LogState.Logout);
            }

            var db        = _uow.DbContext;
            var isTeacher = memberInfo.OrganizationRoleId.HasValue ? db.OrganizationRole.FirstOrDefault(t => t.Id == memberInfo.OrganizationRoleId).IsAdmin : true;

            if (isTeacher == false)
            {
                return(LogState.Error);
            }

            var iCanRequestData = new Infrastructure.ViewModel.School.SignInSynchronize.SignSynciCanRequest
            {
                Course_no = requestData.ClassID.ToUpper(),
                Syll_id   = requestData.syll_id,
                Times     = requestData.Times.ToString(),
                Token     = requestData.Token.ToUpper()
            };

            var iCanMemberRequestDatas = from rmd in requestData.MemberList
                                         select new Infrastructure.ViewModel.School.SignInSynchronize.SignSynciCanMemberListRequest
            {
                Manno  = rmd.StudID,
                Status = Convert.ToInt32(string.Format("{0}0", (int)rmd.Status))
            };

            iCanRequestData.ClassmatesStatus = JsonConvert.SerializeObject(iCanMemberRequestDatas);
            var iCanRequestJson = JsonConvert.SerializeObject(iCanRequestData);

            using (var client = new HttpClient())
            {
                var requestUri  = string.Format("{0}{1}", apiHost, "UploadAllClassmatesBySyllId");
                var httpContent = new StringContent(iCanRequestJson, Encoding.UTF8, "application/json");
                var response    = client.PostAsync(requestUri, httpContent).Result;

                if (response.IsSuccessStatusCode)
                {
                    var responseData = JsonConvert.DeserializeObject <Infrastructure.ViewModel.Base.BackendBaseRequest>(response.Content.ReadAsStringAsync().Result);
                    if (responseData.Success)
                    {
                        return(LogState.Suscess);
                    }
                    else
                    {
                        return(LogState.Error);
                    }
                }
                else
                {
                    return(LogState.NoAccount);
                }
            }
        }
Пример #2
0
        public IHttpActionResult Post(Infrastructure.ViewModel.School.SignInSynchronize.SignSyncClientRequest requestData)
        {
            //      var requestData = JsonConvert.DeserializeObject<Infrastructure.ViewModel.School.SignInSynchronize.SignSyncClientRequest>(strAccess);
            var requestService  = new Service.Utility.RequestDataHelper <Infrastructure.ViewModel.School.SignInSynchronize.SignSyncClientRequest>();
            var checkColumnKeys = new string[4] {
                "icantoken", "classid", "syll_id", "times"
            };
            var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys);
            var response   = new Infrastructure.ViewModel.Base.ResultBaseModel <string>();

            response.Success = false;
            response.Data    = new string [0];
            if (checkEmpty == false)
            {
                response.State = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                return(Content(HttpStatusCode.BadRequest, response));
            }
            requestData.Token = requestData.ICanToken;
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(requestData.Token).Result;

            if (tokenInfo == null)
            {
                response.Data    = new string[0];
                response.Message = "已登出";
                response.State   = Infrastructure.ViewModel.Base.LogState.Logout;
                return(Content(HttpStatusCode.Forbidden, response));
            }

            var signInSyncService = new SignInSyncService();
            var responseData      = signInSyncService.SyncToiCan(requestData);

            if (responseData == Infrastructure.ViewModel.Base.LogState.Suscess)
            {
                response.Success = true;
                response.Data    = new string[1] {
                    "同步成功"
                };
                response.Message = "同步成功";
            }
            else
            {
                response.Message = responseData.ToString();
                response.State   = responseData;
            }
            return(Ok(response));
        }