Beispiel #1
0
        /// <summary>
        /// 取得天氣資訊
        /// </summary>
        /// <param name="strAccess"></param>
        /// <returns></returns>
        public IHttpActionResult Get([FromUri] string strAccess)
        {
            var requestData = new Infrastructure.ViewModel.Base.BackendBaseRequest();

            try
            {
                requestData = JsonConvert.DeserializeObject <Infrastructure.ViewModel.Base.BackendBaseRequest>(strAccess);
                if (requestData.Account == null || requestData.ICanToken == null)
                {
                    return(Content(HttpStatusCode.BadRequest, "參數錯誤"));
                }
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.BadRequest, "參數錯誤"));
            }
            var weatherService = new WeatherService();
            var result         = new Infrastructure.ViewModel.Base.BaseResponse <Infrastructure.ViewModel.Weather.WeatherDataModel>();

            var tokenService = new TokenService();
            var checkToken   = tokenService.GetTokenInfo(requestData.ICanToken).Result;

            if (checkToken == null)
            {
                result.Success = false;
                result.Message = "已登出";
                result.State   = Infrastructure.ViewModel.Base.LogState.Logout;
                return(Ok(result));
            }

            var data = weatherService.GetData(requestData).Result;

            if (data == null)
            {
                result.Success = false;
                result.Message = "查無資料";
                return(Ok(result));
            }

            result.Success = true;
            result.Message = "查詢成功";
            result.Data    = data;
            return(Ok(result));
        }
        private IHttpActionResult MakeApiCall(Infrastructure.ViewModel.Base.BackendBaseRequest requestData)
        {
            var response = new Infrastructure.ViewModel.Base.BaseResponse <List <OnlineBalanceResult> >();

            response.Data = new List <OnlineBalanceResult>();
            var requestService  = new Service.Utility.RequestDataHelper <Infrastructure.ViewModel.Base.BackendBaseRequest>();
            var checkColumnKeys = new string[2] {
                "account", "icantoken"
            };
            var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys);

            if (checkEmpty == false)
            {
                response.Success = false;
                response.State   = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                response.Message = "參數傳遞錯誤(strAccess)";
            }
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(requestData.ICanToken).Result;

            if (tokenInfo == null)
            {
                response.Success = false;
                response.State   = Infrastructure.ViewModel.Base.LogState.Logout;
                response.Message = "已登出";
            }
            var getOnlineBalance = Convert.ToDecimal(uDollarService.GetuDollarData("GetOnlineBalance", requestData.Account));
            var getOrderAmount   = uDollarService.GetuDollarData("GetOrderAmountResult", requestData.Account, false);
            var errorMsg         = JsonConvert.DeserializeObject <List <uDollarErrorMsg> >(uDollarService.GetuDollarData("ParaDefintion", requestData.Account, false));
            var responseData     = new OnlineBalanceResult()
            {
                account             = requestData.Account,
                orderAmount         = getOrderAmount != "0" ? Convert.ToInt32(getOrderAmount) : 0,
                uDollarAmount       = getOnlineBalance >= 0 ? getOnlineBalance : 0,
                uPursePerhapsBlance = 0
            };

            response.Message = getOnlineBalance < 0 ? errorMsg.FirstOrDefault(t => t.Value == getOnlineBalance).Description : "查詢成功";
            response.Data.Add(responseData);
            response.Success = getOnlineBalance >= 0 ? true : false;
            return(Ok(response));
        }
Beispiel #3
0
        public List <Infrastructure.ViewModel.School.GetCampusEventGetResponse> GetList
            (Infrastructure.ViewModel.Base.BackendBaseRequest requestData)
        {
            var db            = _uow.DbContext;
            var responseData  = new List <Infrastructure.ViewModel.School.GetCampusEventGetResponse>();
            var memberService = new MemberService();
            var memberInfo    = memberService.TokenToMember(requestData.Token).Result;

            if (memberInfo == null)
            {
                return(null);
            }

            var sectionService = new SectionService();
            var sectionData    = sectionService.GetOrgNowSeme(memberInfo.OrgId);

            var dbDatas = (from c in db.Calendar
                           join m in db.Members on c.Creator equals m.Id
                           join f in db.FileStorage on c.FileId equals f.Id into ps
                           from o in ps.DefaultIfEmpty()
                           join csg in db.CalendarSemester on c.Id equals csg.CalendarId into csgg
                           from csggt in csgg.DefaultIfEmpty()
                           join cor in db.CalendarOrganizationRole on c.Id equals cor.CalendarId into corg
                           from corgt in corg.DefaultIfEmpty()
                           join cd in db.CalendarDept on c.Id equals cd.CalendarId into cdg
                           from cdgt in cdg.DefaultIfEmpty()
                           where c.OrgId == memberInfo.OrgId && (c.StartDate >= sectionData.StartDate && c.StartDate <= sectionData.EndDate)
                           select new Infrastructure.ViewModel.School.GetCampusEventGetResponse
            {
                Id = c.Id,
                BoarderID = c.Code,
                CreateDate = c.CreateDate.Value,
                CreateMan = m.Account,
                EndDate = c.EndDate,
                IsBigEvent = c.IsBigEvent,
                StartDate = c.StartDate,
                TitleC = c.Title,
                UpdateDate = c.UpdateDate,
                Updater = c.Updater,
                Url = o.FileUrl,
                DeptId = cdgt.DeptId,
                OrganizationRoleId = corgt.OrganizationRoleId,
                SemesterGradeId = csggt.SemesterId
            }).ToList();

            if (dbDatas.FirstOrDefault() == null)
            {
                return(null);
            }

            var memberDept = memberInfo.DeptId.HasValue ? db.Depts.FirstOrDefault(t => t.Id == memberInfo.DeptId.Value) : new Infrastructure.Entity.Dept();
            var memberSemesterGradeInfo = memberInfo.SemesterGradeId.HasValue ? db.SemesterGrade.FirstOrDefault(t => t.Id == memberInfo.SemesterGradeId.Value) : new Infrastructure.Entity.SemesterGrade();
            var memberOrgRoleInfo       = memberInfo.OrganizationRoleId.HasValue ? db.OrganizationRole.FirstOrDefault(t => t.Id == memberInfo.OrganizationRoleId) : new Infrastructure.Entity.OrganizationRole();

            responseData.AddRange(dbDatas);
            //整理資料
            foreach (var dbData in dbDatas)
            {
                if (dbData.Updater.HasValue)
                {
                    dbData.UpdateDate = dbData.UpdateDate.HasValue ? dbData.UpdateDate.Value.ToLocalTime() : dbData.UpdateDate;
                    dbData.UpDateMan  = (dbData.UpDateMan != null && dbData.UpDateMan != string.Empty) ? dbData.UpDateMan : null;
                }
                dbData.CreateDate = dbData.CreateDate.Value.ToLocalTime();
                dbData.StartDate  = dbData.StartDate.ToLocalTime();
                dbData.EndDate    = dbData.EndDate.ToLocalTime();
                dbData.PeriodWeek = GetPeriodWeek(dbData.StartDate, dbData.EndDate, memberInfo.OrgId);
                //假設事件有限制學制顯示
                if (dbData.SemesterGradeId.HasValue)
                {
                    //不是該學制的看不到
                    if (memberSemesterGradeInfo.Id <= 0 || memberSemesterGradeInfo.Id != dbData.SemesterGradeId.Value)
                    {
                        responseData.Remove(dbData);
                    }
                }
                //事件有限制角色顯示
                if (dbData.OrganizationRoleId.HasValue)
                {
                    //不是該角色看不到
                    if (memberOrgRoleInfo.Id <= 0 || memberOrgRoleInfo.Id != dbData.OrganizationRoleId.Value)
                    {
                        responseData.Remove(dbData);
                    }
                }
                //事件有限制學院分類顯示
                if (dbData.DeptId.HasValue)
                {
                    //不屬於該學院分類看不到
                    if (memberDept.Id <= 0 || memberDept.Id != dbData.OrganizationRoleId.Value)
                    {
                        responseData.Remove(dbData);
                    }
                }
            }

            return(responseData);
        }
Beispiel #4
0
        /// <summary>
        /// 取得天氣資訊
        /// </summary>
        /// <param name="data">驗證資訊</param>
        /// <returns></returns>
        public async Task <Infrastructure.ViewModel.Weather.WeatherDataModel> GetData(Infrastructure.ViewModel.Base.BackendBaseRequest data)
        {
            var db           = _uow.DbContext;
            var loginService = new LoginService();
            var memberInfo   = (from m in db.Members
                                join ut in db.UserToken on m.Id equals ut.MemberId
                                where m.Account == data.Account && ut.Token == data.ICanToken
                                select m).FirstOrDefault();

            if (memberInfo == null)
            {
                return(null);
            }

            var result = new Infrastructure.ViewModel.Weather.WeatherDataModel()
            {
                name = "Taipei",
                id   = (int)(Math.Round(99999.0, 0)),
                main = new Infrastructure.ViewModel.Weather.Main()
                {
                    humidity = 73, pressure = 1016, temp = (float)23.5, temp_max = 24, temp_min = 23
                },
                weather = new List <Infrastructure.ViewModel.Weather.Weather>()
            };

            //判斷呼叫時間間隔
            if ((DateTime.Now - lastCall).TotalMinutes <= 5)
            {
                if (mWeatherDataModel != null)
                {
                    return(mWeatherDataModel);
                }
            }


            lastCall = DateTime.Now;

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var urlparameters = "q=Taipei&units=metric&APPID=7d6d2eba18223d69ab300e873183e8bc";
                var weatherUrl    = ConfigurationManager.AppSettings["weatherAPIUrl"].ToString();
                var url           = string.Format("{0}?{1}", weatherUrl, urlparameters);
                // var response = await client.GetAsync(url);
                //  var content = await response.Content.ReadAsStringAsync();
                try
                {
                    //   result = JsonConvert.DeserializeObject<Infrastructure.ViewModel.Weather.WeatherDataModel>(content);
                    if (result == null)
                    {
                        return(null);
                    }
                    var cloneWeather = new Infrastructure.ViewModel.Weather.Weather()
                    {
                        id          = 803,
                        main        = "Clouds",
                        description = "broken clouds",
                        icon        = "04d",
                        icon_group  = "80x"
                    };
                    result.weather.Add(cloneWeather);
                    //處理icon的對應
                    if (result.weather != null && result.weather.Count > 0)
                    {
                        var d = result.weather.First();
                        if (d.id == 800)
                        {
                            if (DateTime.Now.Hour >= 18)
                            {
                                d.icon_group = "800_n";
                            }
                            else
                            {
                                d.icon_group = "800_d";
                            }
                        }
                        else
                        {
                            var sid = d.id.ToString().Substring(0, 1);
                            switch (sid)
                            {
                            case "2":
                                d.icon_group = "2xx";
                                break;

                            case "3":
                                d.icon_group = "3xx";
                                break;

                            case "5":
                                d.icon_group = "5xx";
                                break;

                            case "6":
                                d.icon_group = "6xx";
                                break;

                            case "7":
                                d.icon_group = "7xx";
                                break;

                            case "8":
                                d.icon_group = "80x";
                                break;

                            default:
                                d.icon_group = "80x";
                                break;
                            }
                        }
                    }
                    result.currentDate = DateTime.Now;

                    var morning   = DateTime.Parse(DateTime.Now.ToString("yyyy/MM/dd") + " 05:00:00");
                    var afternoon = DateTime.Parse(DateTime.Now.ToString("yyyy/MM/dd") + " 11:00:00");
                    var night     = DateTime.Parse(DateTime.Now.ToString("yyyy/MM/dd") + " 18:00:00");
                    if (result.currentDate >= morning && result.currentDate < afternoon)
                    {
                        result.greetText = "早安!";
                    }
                    else if (result.currentDate >= afternoon && result.currentDate < night)
                    {
                        result.greetText = "午安!";
                    }
                    else
                    {
                        result.greetText = "晚安!";
                    }

                    mWeatherDataModel = result;
                    return(result);
                }
                catch (Exception ex)
                {
                    return(null);
                }
            }
        }
Beispiel #5
0
        /// <summary>
        /// 組織登入API
        /// </summary>
        /// <param name="account"></param>
        /// <param name="pwd"></param>
        /// <param name="deviceId"></param>
        /// <param name="orgId"></param>
        /// <returns></returns>
        public async Task <bool> OrganizationLoginCheck(string loginUrl, LoginRequest data, int orgId)
        {
            var db              = _uow.DbContext;
            var response        = false;
            var loginColumnKeys = db.OrganizationLoginColumn.Where(t => t.OrgId == orgId);
            var checkColumn     = loginColumnKeys.FirstOrDefault();

            if (checkColumn == null)
            {
                return(response);
            }

            var contentJson       = string.Empty;
            var tokenInfo         = new Infrastructure.ViewModel.Base.BackendBaseRequest();
            var schoolLoginKey    = ConfigurationManager.AppSettings["iCanLoginKey"].ToString();
            var appLoginKey       = ConfigurationManager.AppSettings["AppLoginKey"].ToString();
            var encryptionService = new Encryption();
            var accounts          = data.Account.Split('@');
            var account           = accounts[0];
            var simulateAccount   = accounts.Count() > 1 ? accounts[1] : account;

            //有模擬登入者,需要驗證模擬登入者是否為系統管理者
            if (accounts.Count() > 1)
            {
                var checkSimulatorAuth = db.Members.FirstOrDefault(t => t.Account == account).RoleName == "1";
                if (checkSimulatorAuth == false)
                {
                    return(false);
                }
            }


            using (var httpClient = new HttpClient())
            {
                var password = encryptionService.EncryptString(encryptionService.DecryptString(data.Password, appLoginKey), schoolLoginKey);
                if (checkColumn.Method.ToLower() == "post")
                {
                    var jsonData = "{";
                    foreach (var column in loginColumnKeys)
                    {
                        switch (column.Type.ToLower())
                        {
                        case "account":
                            jsonData = string.Format("{0}\"{1}\":\"{2}\",", jsonData, column.ColumnKey, account);
                            break;

                        case "pwd":
                            jsonData = string.Format("{0}\"{1}\":\"{2}\",", jsonData, column.ColumnKey, password);
                            break;

                        case "devicekey":
                            jsonData = string.Format("{0}\"{1}\":\"{2}\",", jsonData, column.ColumnKey, data.PhoneID);
                            break;

                        case "simulate":
                            jsonData = string.Format("{0}\"{1}\":\"{2}\",", jsonData, column.ColumnKey, simulateAccount);
                            break;

                        default:
                            break;
                        }
                    }
                    jsonData = jsonData.Substring(0, jsonData.Length - 1);
                    httpClient.BaseAddress = new Uri(loginUrl);
                    jsonData += "}";
                    var request = new HttpRequestMessage(HttpMethod.Post, loginUrl);
                    request.Content = new StringContent(jsonData, Encoding.UTF8, "application/json");
                    var responseContent = httpClient.SendAsync(request);
                    if (responseContent.Result.IsSuccessStatusCode)
                    {
                        var responseString = responseContent.Result.Content.ReadAsStringAsync().Result;
                        tokenInfo = JsonConvert.DeserializeObject <Infrastructure.ViewModel.Base.BackendBaseRequest>(responseString);
                    }
                }
                else if (checkColumn.Method.ToLower() == "get")
                {
                    loginUrl += "?";
                    foreach (var column in loginColumnKeys)
                    {
                        switch (column.Type.ToLower())
                        {
                        case "account":
                            loginUrl = string.Format("{0}{1}={2}&", loginUrl, column.ColumnKey, account);
                            break;

                        case "pwd":
                            loginUrl = string.Format("{0}{1}={2}&", loginUrl, column.ColumnKey, password);
                            break;

                        case "devicekey":
                            loginUrl = string.Format("{0}{1}={2}&", loginUrl, column.ColumnKey, data.PhoneID);
                            break;

                        case "simulate":
                            loginUrl = string.Format("{0}{1}={2}&", loginUrl, column.ColumnKey, simulateAccount);
                            break;

                        default:
                            break;
                        }
                    }
                    loginUrl = loginUrl.Substring(0, loginUrl.Length - 1);
                    var responseContent = await httpClient.GetAsync(loginUrl);

                    var responseString = responseContent.Content.ReadAsStringAsync().Result;
                    tokenInfo = JsonConvert.DeserializeObject <BackendBaseRequest>(responseString);
                }

                response = tokenInfo.Success;
                if (tokenInfo.Success)
                {
                    var tokenService    = new TokenService();
                    var memberService   = new MemberService();
                    var orgToken        = tokenInfo.Token != null && tokenInfo.Token != string.Empty ? tokenInfo.Token : Guid.NewGuid().ToString().ToLower();
                    var loginMemberInfo = data.OrgId.HasValue ?
                                          db.Members.FirstOrDefault(t => t.OrgId == data.OrgId.Value && t.Account == simulateAccount) :
                                          db.Members.FirstOrDefault(t => t.Account == simulateAccount);
                    var loginLogResponse = tokenService.InsertUserTokenByOrganization(data.RequestSystem, data.PhoneID, loginMemberInfo, data.PushToken, orgToken, loginMemberInfo.Id);
                }
            }
            return(response);
        }
 /// <summary>
 /// 取得指定帳號目前的線上uDollar餘額(已經扣除預購金額)
 /// </summary>
 /// <param name="requestData">json資料,登入基本驗證資訊</param>
 /// <returns></returns>
 public IHttpActionResult Post([FromBody] Infrastructure.ViewModel.Base.BackendBaseRequest requestData)
 {
     return(MakeApiCall(requestData));
 }