updates
parent
06ae6ffe5a
commit
8029f50dd9
|
|
@ -6,6 +6,58 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using System.Web;
|
||||
|
||||
[Table("babyRec")]
|
||||
public class babyRec
|
||||
{
|
||||
[JsonIgnore]
|
||||
[Key]
|
||||
public int babyRec_sn { get; set; } = 0;
|
||||
public string babyRec_uid { get; set; } = "";
|
||||
public string babyData_uid { get; set; } = "";
|
||||
public string babyRec_key { get; set; } = "";
|
||||
public string line_uid { get; set; } = "";
|
||||
public double babyRec_height { get; set; } = 0;
|
||||
public double babyRec_inpercent { get; set; } = 0;
|
||||
public double babyRec_middleHeight { get; set; } = 0;
|
||||
public DateTime babyRec_recdate { get; set; } = DateTime.Now;
|
||||
public int babyRec_recYear { get; set; } = 0;
|
||||
public int babyRec_recMonth { get; set; } = 0;
|
||||
public int babyRec_recDay { get; set; } = 0;
|
||||
|
||||
public int babyRec_months { get; set; } = 0;
|
||||
public string babyRec_yearMonthStr { get; set; } = "";
|
||||
public DateTime babyRec_createdate { get; set; } = DateTime.Now;
|
||||
}
|
||||
|
||||
[Table("babyData")]
|
||||
public class babyData
|
||||
{
|
||||
[JsonIgnore]
|
||||
[Key]
|
||||
public int babyData_sn { get; set; } = 0;
|
||||
public string babyData_uid { get; set; } = "";
|
||||
public string line_uid { get; set; } = "";
|
||||
public string babyData_name { get; set; } = "";
|
||||
public DateTime babyData_birthday { get; set; } = DateTime.Now;
|
||||
public string babyData_sexual { get; set; } = "";
|
||||
public string babyData_bindedLine { get; set; } = "";
|
||||
public DateTime babyData_createdate { get; set; } = DateTime.Now;
|
||||
public DateTime babyData_bindeddate { get; set; } = DateTime.Now;
|
||||
}
|
||||
|
||||
[Table("lineUser")]
|
||||
public class lineUser
|
||||
{
|
||||
[JsonIgnore]
|
||||
[Key]
|
||||
public int lineUser_sn { get; set; } = 0;
|
||||
public string lineUser_uid { get; set; } = "";
|
||||
public string line_uid { get; set; } = "";
|
||||
public string line_displayName { get; set; } = "";
|
||||
public DateTime lineUser_createdate { get; set; } = DateTime.Now;
|
||||
public DateTime lineUser_modifydate { get; set; } = DateTime.Now;
|
||||
}
|
||||
|
||||
[Table("login")]
|
||||
public class login
|
||||
{
|
||||
|
|
@ -27,3 +79,44 @@ public class token
|
|||
public DateTime token_createdate { get; set; } = DateTime.Now;
|
||||
public DateTime token_expireddate { get; set; } = DateTime.Now;
|
||||
}
|
||||
|
||||
[Table("temp_m")]
|
||||
public class temp_m
|
||||
{
|
||||
[JsonIgnore]
|
||||
[Key]
|
||||
public string temp_month { get; set; } = "";
|
||||
public double temp_3 { get; set; } = 0;
|
||||
public double temp_15 { get; set; } = 0;
|
||||
public double temp_25 { get; set; } = 0;
|
||||
public double temp_50 { get; set; } = 0;
|
||||
public double temp_75 { get; set; } = 0;
|
||||
public double temp_85 { get; set; } = 0;
|
||||
public double temp_97 { get; set; } = 0;
|
||||
}
|
||||
|
||||
[Table("lenHeiTable")]
|
||||
public class lenHeiTable
|
||||
{
|
||||
[JsonIgnore]
|
||||
[Key]
|
||||
public int lenHeiTable_sn { get; set; } = 0;
|
||||
public string lenHeiTable_sexual { get; set; } = "";
|
||||
public int lenHeiTable_month { get; set; } = 0;
|
||||
public double lenHeiTable_minVal { get; set; } = 0;
|
||||
public double lenHeiTable_maxVal { get; set; } = 0;
|
||||
public int lenHeiTable_percent { get; set; } = 0;
|
||||
}
|
||||
|
||||
[Table("ipTable")]
|
||||
public class ipTable
|
||||
{
|
||||
[JsonIgnore]
|
||||
[Key]
|
||||
public int ipTable_sn { get; set; } = 0;
|
||||
public string ipTable_address { get; set; } = "";
|
||||
public DateTime ipTable_createdate { get; set; } = DateTime.Now;
|
||||
public DateTime ipTable_modifydate { get; set; } = DateTime.Now;
|
||||
public string ipTable_create_user_uid { get; set; } = "";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,9 +15,83 @@ using System.Drawing;
|
|||
using System.IO;
|
||||
using System.Data.SqlClient;
|
||||
using System.Configuration;
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
|
||||
public static class globalClass
|
||||
{
|
||||
public static string YearMonthDiff(DateTime self, DateTime target) {
|
||||
int years, months, days;
|
||||
// 因為只需取量,不決定誰大誰小,所以如果self < target時要交換將大的擺前面
|
||||
if (self < target)
|
||||
{
|
||||
DateTime tmp = target;
|
||||
target = self;
|
||||
self = tmp;
|
||||
}
|
||||
|
||||
// 將年轉換成月份以便用來計算
|
||||
months = 12 * (self.Year - target.Year) + (self.Month - target.Month);
|
||||
|
||||
// 如果天數要相減的量不夠時要向月份借天數補滿該月再來相減
|
||||
if (self.Day < target.Day)
|
||||
{
|
||||
months--;
|
||||
days = DateTime.DaysInMonth(target.Year, target.Month) - target.Day + self.Day;
|
||||
}
|
||||
else
|
||||
{
|
||||
days = self.Day - target.Day;
|
||||
}
|
||||
|
||||
// 天數計算完成後將月份轉成年
|
||||
years = months / 12;
|
||||
months = months % 12;
|
||||
|
||||
return years.ToString() + "歲" + months.ToString() + "月";
|
||||
}
|
||||
|
||||
public static int MonthDiff(DateTime self, DateTime target)
|
||||
{
|
||||
int years, months, days;
|
||||
// 因為只需取量,不決定誰大誰小,所以如果self < target時要交換將大的擺前面
|
||||
if (self < target)
|
||||
{
|
||||
DateTime tmp = target;
|
||||
target = self;
|
||||
self = tmp;
|
||||
}
|
||||
|
||||
// 將年轉換成月份以便用來計算
|
||||
months = 12 * (self.Year - target.Year) + (self.Month - target.Month);
|
||||
|
||||
// 如果天數要相減的量不夠時要向月份借天數補滿該月再來相減
|
||||
if (self.Day < target.Day)
|
||||
{
|
||||
months--;
|
||||
days = DateTime.DaysInMonth(target.Year, target.Month) - target.Day + self.Day;
|
||||
}
|
||||
else
|
||||
{
|
||||
days = self.Day - target.Day;
|
||||
}
|
||||
|
||||
return months;
|
||||
}
|
||||
|
||||
public static string GetIPAddress()
|
||||
{
|
||||
System.Web.HttpContext context = System.Web.HttpContext.Current;
|
||||
string sIPAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
|
||||
if (string.IsNullOrEmpty(sIPAddress))
|
||||
{
|
||||
return context.Request.ServerVariables["REMOTE_ADDR"];
|
||||
}
|
||||
else
|
||||
{
|
||||
string[] ipArray = sIPAddress.Split(new Char[] { ',' });
|
||||
return ipArray[0];
|
||||
}
|
||||
}
|
||||
public static string CreateRandomCode(int Number)
|
||||
{
|
||||
string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
|
||||
|
|
|
|||
|
|
@ -0,0 +1,100 @@
|
|||
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="abbott_2024_event.BackEnd.Login" %>
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><!-- End Required meta tags -->
|
||||
<!-- Begin SEO tag -->
|
||||
<title> 後台登入 </title>
|
||||
<!-- End SEO tag -->
|
||||
<!-- Favicons -->
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="assets/favicon.png">
|
||||
<link rel="shortcut icon" href="assets/favicon.ico">
|
||||
<meta name="theme-color" content="#3063A0"><!-- Google font -->
|
||||
<link href="https://fonts.googleapis.com/css?family=Fira+Sans:400,500,600" rel="stylesheet"><!-- End Google font -->
|
||||
<!-- BEGIN PLUGINS STYLES -->
|
||||
<link rel="stylesheet" href="assets/vendor/@fortawesome/fontawesome-free/css/all.min.css"><!-- END PLUGINS STYLES -->
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<link rel="stylesheet" href="assets/stylesheets/theme.min.css" data-skin="default">
|
||||
<link rel="stylesheet" href="assets/stylesheets/theme-dark.min.css" data-skin="dark">
|
||||
<link rel="stylesheet" href="assets/stylesheets/custom.css">
|
||||
<script>
|
||||
var skin = localStorage.getItem('skin') || 'default';
|
||||
var isCompact = JSON.parse(localStorage.getItem('hasCompactMenu'));
|
||||
var disabledSkinStylesheet = document.querySelector('link[data-skin]:not([data-skin="' + skin + '"])');
|
||||
// Disable unused skin immediately
|
||||
disabledSkinStylesheet.setAttribute('rel', '');
|
||||
disabledSkinStylesheet.setAttribute('disabled', true);
|
||||
// add flag class to html immediately
|
||||
if (isCompact == true) document.querySelector('html').classList.add('preparing-compact-menu');
|
||||
</script><!-- END THEME STYLES -->
|
||||
</head>
|
||||
<body>
|
||||
<!--[if lt IE 10]>
|
||||
<div class="page-message" role="alert">You are using an <strong>outdated</strong> browser. Please <a class="alert-link" href="http://browsehappy.com/">upgrade your browser</a> to improve your experience and security.</div>
|
||||
<![endif]-->
|
||||
<!-- .auth -->
|
||||
<main class="auth">
|
||||
<header id="auth-header" class="auth-header" style="background-image: url(assets/images/illustration/img-1.png);">
|
||||
<h1>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="64" viewbox="0 0 351 100">
|
||||
<defs>
|
||||
<path id="a" d="M156.538 45.644v1.04a6.347 6.347 0 0 1-1.847 3.98L127.708 77.67a6.338 6.338 0 0 1-3.862 1.839h-1.272a6.34 6.34 0 0 1-3.862-1.839L91.728 50.664a6.353 6.353 0 0 1 0-9l9.11-9.117-2.136-2.138a3.171 3.171 0 0 0-4.498 0L80.711 43.913a3.177 3.177 0 0 0-.043 4.453l-.002.003.048.047 24.733 24.754-4.497 4.5a6.339 6.339 0 0 1-3.863 1.84h-1.27a6.337 6.337 0 0 1-3.863-1.84L64.971 50.665a6.353 6.353 0 0 1 0-9l26.983-27.008a6.336 6.336 0 0 1 4.498-1.869c1.626 0 3.252.622 4.498 1.87l26.986 27.006a6.353 6.353 0 0 1 0 9l-9.11 9.117 2.136 2.138a3.171 3.171 0 0 0 4.498 0l13.49-13.504a3.177 3.177 0 0 0 .046-4.453l.002-.002-.047-.048-24.737-24.754 4.498-4.5a6.344 6.344 0 0 1 8.996 0l26.983 27.006a6.347 6.347 0 0 1 1.847 3.98zm-46.707-4.095l-2.362 2.364a3.178 3.178 0 0 0 0 4.501l2.362 2.364 2.361-2.364a3.178 3.178 0 0 0 0-4.501l-2.361-2.364z"></path>
|
||||
</defs>
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<path fill="currentColor" fill-rule="nonzero" d="M39.252 80.385c-13.817 0-21.06-8.915-21.06-22.955V13.862H.81V.936h33.762V58.1c0 6.797 4.346 9.026 9.026 9.026 2.563 0 5.237-.446 8.58-1.783l3.677 12.034c-5.794 1.894-9.694 3.009-16.603 3.009zM164.213 99.55V23.78h13.372l1.225 5.571h.335c4.457-4.011 10.585-6.908 16.491-6.908 13.817 0 22.174 11.031 22.174 28.08 0 18.943-11.588 29.863-23.957 29.863-4.903 0-9.694-2.117-13.594-6.017h-.446l.78 9.025V99.55h-16.38zm25.852-32.537c6.128 0 10.92-4.903 10.92-16.268 0-9.917-3.232-14.932-10.14-14.932-3.566 0-6.797 1.56-10.252 5.126v22.397c3.12 2.674 6.686 3.677 9.472 3.677zm69.643 13.372c-17.272 0-30.643-10.586-30.643-28.972 0-18.163 13.928-28.971 28.748-28.971 17.049 0 26.075 11.477 26.075 26.52 0 3.008-.558 6.017-.78 7.354h-37.663c1.56 8.023 7.465 11.589 16.491 11.589 5.014 0 9.36-1.337 14.263-3.9l5.46 9.917c-6.351 4.011-14.597 6.463-21.951 6.463zm-1.338-45.463c-6.462 0-11.031 3.454-12.702 10.363h23.622c-.78-6.797-4.568-10.363-10.92-10.363zm44.238 44.126V23.779h13.371l1.337 12.034h.334c5.46-9.025 13.595-13.371 22.398-13.371 4.902 0 7.465.78 10.697 2.228l-3.343 13.706c-3.454-1.003-5.683-1.56-9.806-1.56-6.797 0-13.928 3.566-18.608 13.483v28.749h-16.38z"></path>
|
||||
<use class="fill-warning" xlink:href="#a"></use>
|
||||
</g>
|
||||
</svg> <span class="sr-only">Sign In</span>
|
||||
</h1>
|
||||
|
||||
</header><!-- form -->
|
||||
<form class="auth-form">
|
||||
<!-- .form-group -->
|
||||
<div class="form-group">
|
||||
<div class="form-label-group">
|
||||
<input type="text" id="login_id" class="form-control" placeholder="帳號" autofocus=""> <label for="login_id">帳號</label>
|
||||
</div>
|
||||
</div><!-- /.form-group -->
|
||||
<!-- .form-group -->
|
||||
<div class="form-group">
|
||||
<div class="form-label-group">
|
||||
<input type="password" id="login_pwd" class="form-control" placeholder="密碼"> <label for="login_pwd">密碼</label>
|
||||
</div>
|
||||
</div><!-- /.form-group -->
|
||||
<!-- .form-group -->
|
||||
<div class="form-group">
|
||||
<button id="login_btn" class="btn btn-lg btn-primary btn-block" type="button">登入</button>
|
||||
</div><!-- /.form-group -->
|
||||
|
||||
</form><!-- /.auth-form -->
|
||||
|
||||
</main><!-- /.auth -->
|
||||
<!-- BEGIN BASE JS -->
|
||||
<script src="assets/vendor/jquery/jquery.min.js"></script>
|
||||
<script src="assets/vendor/jquery.cookie/jquery.cookie.js"></script>
|
||||
<script src="assets/vendor/popper.js/umd/popper.min.js"></script>
|
||||
<script src="assets/vendor/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="assets/javascript/sha256.js"></script>
|
||||
<script src="assets/javascript/custom/globalJS.js"></script>
|
||||
<script src="assets/javascript/custom/Login.js?v=2" ></script>
|
||||
<!-- END BASE JS -->
|
||||
<!-- BEGIN PLUGINS JS -->
|
||||
<script src="assets/vendor/particles.js/particles.js"></script>
|
||||
<script>
|
||||
/**
|
||||
* Keep in mind that your scripts may not always be executed after the theme is completely ready,
|
||||
* you might need to observe the `theme:load` event to make sure your scripts are executed after the theme is ready.
|
||||
*/
|
||||
$(document).on('theme:init', () => {
|
||||
/* particlesJS.load(@dom-id, @path-json, @callback (optional)); */
|
||||
particlesJS.load('auth-header', 'assets/javascript/pages/particles.json');
|
||||
})
|
||||
</script> <!-- END PLUGINS JS -->
|
||||
<!-- BEGIN THEME JS -->
|
||||
<script src="assets/javascript/theme.js"></script> <!-- END THEME JS -->
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
using Dapper;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
|
||||
namespace abbott_2024_event.BackEnd
|
||||
{
|
||||
public partial class Login : System.Web.UI.Page
|
||||
{
|
||||
SqlConnection conn = new SqlConnection(globalClass.appsettings("DBConnectionString"));
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
string myIP = globalClass.GetIPAddress();
|
||||
|
||||
if (myIP == "::1")
|
||||
{
|
||||
myIP = "127.0.0.1";
|
||||
}
|
||||
|
||||
Boolean isAllow = false;
|
||||
|
||||
if (myIP == "127.0.0.1")
|
||||
{
|
||||
isAllow = true;
|
||||
}
|
||||
|
||||
ipTable ipTable = conn.QueryFirstOrDefault<ipTable>("select * from ipTable where ipTable_address = @ipTable_address", new { ipTable_address = myIP });
|
||||
|
||||
if (ipTable != null) {
|
||||
isAllow = true;
|
||||
}
|
||||
|
||||
if (isAllow == false)
|
||||
{
|
||||
Response.Redirect("auth-error-v3.html");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <自動產生>
|
||||
// 這段程式碼是由工具產生的。
|
||||
//
|
||||
// 變更這個檔案可能會導致不正確的行為,而且如果已重新產生
|
||||
// 程式碼,則會遺失變更。
|
||||
// </自動產生>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace abbott_2024_event.BackEnd
|
||||
{
|
||||
|
||||
|
||||
public partial class Login
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -34,8 +34,7 @@
|
|||
if (isCompact == true) document.querySelector('html').classList.add('preparing-compact-menu');
|
||||
</script>
|
||||
<!-- END THEME STYLES -->
|
||||
<asp:ContentPlaceHolder ID="head" runat="server">
|
||||
</asp:ContentPlaceHolder>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<form id="form1" runat="server">
|
||||
|
|
@ -120,7 +119,10 @@
|
|||
<li class="menu-item">
|
||||
<a href="index.html" class="menu-link"><span class="menu-icon fas fa-home"></span> <span class="menu-text">Dashboard</span></a>
|
||||
</li><!-- /.menu-item -->
|
||||
|
||||
<!-- .menu-item -->
|
||||
<li class="menu-item">
|
||||
<a href="ip-management.aspx" class="menu-link"><span class="menu-icon oi oi-wrench"></span> <span class="menu-text">IP白名單</span></a>
|
||||
</li><!-- /.menu-item -->
|
||||
</ul><!-- /.menu -->
|
||||
</nav><!-- /.stacked-menu -->
|
||||
</div><!-- /.aside-menu -->
|
||||
|
|
@ -153,7 +155,8 @@
|
|||
<script src="assets/vendor/perfect-scrollbar/perfect-scrollbar.min.js"></script> <!-- END PLUGINS JS -->
|
||||
<!-- BEGIN THEME JS -->
|
||||
<script src="assets/javascript/theme.min.js"></script> <!-- END THEME JS -->
|
||||
|
||||
<asp:ContentPlaceHolder ID="head" runat="server">
|
||||
</asp:ContentPlaceHolder>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
using System;
|
||||
using Dapper;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
|
|
@ -10,9 +12,39 @@ namespace abbott_2024_event.BackEnd
|
|||
|
||||
public partial class Main : System.Web.UI.MasterPage
|
||||
{
|
||||
SqlConnection conn = new SqlConnection(globalClass.appsettings("DBConnectionString"));
|
||||
public authToken authToken;
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
string myIP = globalClass.GetIPAddress();
|
||||
|
||||
if (myIP == "::1")
|
||||
{
|
||||
myIP = "127.0.0.1";
|
||||
}
|
||||
|
||||
Boolean isAllow = false;
|
||||
|
||||
if (myIP == "127.0.0.1")
|
||||
{
|
||||
isAllow = true;
|
||||
}
|
||||
|
||||
ipTable ipTable = conn.QueryFirstOrDefault<ipTable>("select * from ipTable where ipTable_address = @ipTable_address", new { ipTable_address = myIP });
|
||||
|
||||
if (ipTable != null)
|
||||
{
|
||||
isAllow = true;
|
||||
}
|
||||
|
||||
if (isAllow == false)
|
||||
{
|
||||
Response.Redirect("auth-error-v3.html");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
authToken = new authToken();
|
||||
|
||||
if (authToken.user_isLogin == false) {
|
||||
|
|
|
|||
|
|
@ -14,15 +14,6 @@ namespace abbott_2024_event.BackEnd
|
|||
public partial class Main
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// head 控制項。
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 自動產生的欄位。
|
||||
/// 若要修改,請將欄位宣告從設計工具檔案移到程式碼後置檔案。
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.ContentPlaceHolder head;
|
||||
|
||||
/// <summary>
|
||||
/// form1 控制項。
|
||||
/// </summary>
|
||||
|
|
@ -40,5 +31,14 @@ namespace abbott_2024_event.BackEnd
|
|||
/// 若要修改,請將欄位宣告從設計工具檔案移到程式碼後置檔案。
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.ContentPlaceHolder ContentPlaceHolder1;
|
||||
|
||||
/// <summary>
|
||||
/// head 控制項。
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 自動產生的欄位。
|
||||
/// 若要修改,請將欄位宣告從設計工具檔案移到程式碼後置檔案。
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.ContentPlaceHolder head;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
<%@ WebHandler Language="C#" CodeBehind="importTestData.ashx.cs" Class="abbott_2024_event.BackEnd.api.importTestData" %>
|
||||
|
|
@ -0,0 +1,150 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization.Json;
|
||||
using System.Web;
|
||||
using System.Web.SessionState;
|
||||
using Dapper;
|
||||
using Dapper.Contrib.Extensions;
|
||||
|
||||
namespace abbott_2024_event.BackEnd.api
|
||||
{
|
||||
/// <summary>
|
||||
/// importTestData 的摘要描述
|
||||
/// </summary>
|
||||
public class importTestData : IHttpHandler
|
||||
{
|
||||
|
||||
|
||||
SqlConnection conn = new SqlConnection(globalClass.appsettings("DBConnectionString"));
|
||||
public void ProcessRequest(HttpContext context)
|
||||
{
|
||||
context.Response.ContentType = "text/plain";
|
||||
context.Response.Write("Hello World");
|
||||
|
||||
List<temp_m> tempList = conn.Query<temp_m>("select * from temp_f").ToList();
|
||||
|
||||
int intmonth = 0;
|
||||
|
||||
foreach (temp_m tempm in tempList) {
|
||||
|
||||
|
||||
double minVal = 0;
|
||||
double maxVal = 0;
|
||||
|
||||
for (int i = 1; i <= 8; i++) {
|
||||
lenHeiTable newData = new lenHeiTable();
|
||||
|
||||
newData.lenHeiTable_month = intmonth;
|
||||
newData.lenHeiTable_sexual = "F";
|
||||
|
||||
if (i == 1) {
|
||||
maxVal = tempm.temp_3;
|
||||
|
||||
newData.lenHeiTable_minVal = minVal;
|
||||
newData.lenHeiTable_maxVal = maxVal;
|
||||
newData.lenHeiTable_percent = 3;
|
||||
|
||||
minVal = tempm.temp_3;
|
||||
}
|
||||
|
||||
if (i == 2)
|
||||
{
|
||||
maxVal = tempm.temp_15;
|
||||
|
||||
newData.lenHeiTable_minVal = minVal;
|
||||
newData.lenHeiTable_maxVal = maxVal;
|
||||
newData.lenHeiTable_percent = 15;
|
||||
|
||||
minVal = tempm.temp_15;
|
||||
}
|
||||
|
||||
if (i == 3)
|
||||
{
|
||||
maxVal = tempm.temp_25;
|
||||
|
||||
newData.lenHeiTable_minVal = minVal;
|
||||
newData.lenHeiTable_maxVal = maxVal;
|
||||
newData.lenHeiTable_percent = 25;
|
||||
|
||||
minVal = tempm.temp_25;
|
||||
}
|
||||
|
||||
if (i == 4)
|
||||
{
|
||||
maxVal = tempm.temp_50;
|
||||
|
||||
newData.lenHeiTable_minVal = minVal;
|
||||
newData.lenHeiTable_maxVal = maxVal;
|
||||
newData.lenHeiTable_percent = 50;
|
||||
|
||||
minVal = tempm.temp_50;
|
||||
}
|
||||
|
||||
if (i == 5)
|
||||
{
|
||||
maxVal = tempm.temp_75;
|
||||
|
||||
newData.lenHeiTable_minVal = minVal;
|
||||
newData.lenHeiTable_maxVal = maxVal;
|
||||
newData.lenHeiTable_percent = 75;
|
||||
|
||||
minVal = tempm.temp_75;
|
||||
}
|
||||
|
||||
if (i == 6)
|
||||
{
|
||||
maxVal = tempm.temp_85;
|
||||
|
||||
newData.lenHeiTable_minVal = minVal;
|
||||
newData.lenHeiTable_maxVal = maxVal;
|
||||
newData.lenHeiTable_percent = 85;
|
||||
|
||||
minVal = tempm.temp_85;
|
||||
}
|
||||
|
||||
if (i == 7)
|
||||
{
|
||||
maxVal = tempm.temp_97;
|
||||
|
||||
newData.lenHeiTable_minVal = minVal;
|
||||
newData.lenHeiTable_maxVal = maxVal;
|
||||
newData.lenHeiTable_percent = 97;
|
||||
|
||||
minVal = tempm.temp_97;
|
||||
}
|
||||
|
||||
if (i == 8)
|
||||
{
|
||||
maxVal = 999;
|
||||
|
||||
newData.lenHeiTable_minVal = minVal;
|
||||
newData.lenHeiTable_maxVal = maxVal;
|
||||
newData.lenHeiTable_percent = 100;
|
||||
|
||||
minVal = 0;
|
||||
}
|
||||
|
||||
conn.Insert<lenHeiTable>(newData);
|
||||
}
|
||||
|
||||
intmonth++;
|
||||
}
|
||||
|
||||
|
||||
context.Response.ContentType = "text/plain";
|
||||
context.Response.Write("Hello World");
|
||||
|
||||
|
||||
}
|
||||
|
||||
public bool IsReusable
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
<%@ WebHandler Language="C#" CodeBehind="ipList.ashx.cs" Class="abbott_2024_event.BackEnd.api.ipList" %>
|
||||
|
|
@ -0,0 +1,125 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Runtime.Serialization.Json;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Web.Services.Protocols;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Web.SessionState;
|
||||
using System.Data;
|
||||
using System.IO.Compression;
|
||||
using System.Data.SqlClient;
|
||||
using Dapper;
|
||||
using Dapper.Contrib.Extensions;
|
||||
|
||||
namespace abbott_2024_event.BackEnd.api
|
||||
{
|
||||
/// <summary>
|
||||
/// ipList 的摘要描述
|
||||
/// </summary>
|
||||
public class ipList : IHttpHandler, IReadOnlySessionState
|
||||
{
|
||||
SqlConnection conn = new SqlConnection(globalClass.appsettings("DBConnectionString"));
|
||||
public void ProcessRequest(HttpContext context)
|
||||
{
|
||||
result objRet = new result();
|
||||
DataContractJsonSerializer json = new DataContractJsonSerializer(objRet.GetType());
|
||||
context.Response.ContentType = "application/json;charset=utf-8";
|
||||
context.Response.AddHeader("Access-Control-Allow-Origin", "*");
|
||||
|
||||
string acceptEncoding = context.Request.Headers["Accept-Encoding"].ToString().ToUpperInvariant();
|
||||
if (!String.IsNullOrEmpty(acceptEncoding))
|
||||
{
|
||||
if (acceptEncoding.Contains("GZIP"))
|
||||
{
|
||||
//输出流头部GZIP压缩
|
||||
context.Response.AppendHeader("Content-encoding", "gzip");
|
||||
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
|
||||
}
|
||||
else if (acceptEncoding.Contains("DEFLATE"))
|
||||
{
|
||||
//输出流头部DEFLATE压缩
|
||||
context.Response.AppendHeader("Content-encoding", "deflate");
|
||||
context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress);
|
||||
}
|
||||
}
|
||||
|
||||
authToken objAuth = new authToken();
|
||||
|
||||
string allowAnyIP = (context.Request["allow"] == null) ? "" : context.Request["allow"].ToString();
|
||||
string iplist = (context.Request["iplist"] == null) ? "[]" : context.Request["iplist"].ToString();
|
||||
string method = (context.Request["method"] == null) ? "" : context.Request["method"].ToString();
|
||||
|
||||
if (!objAuth.user_isLogin)
|
||||
{
|
||||
objRet.ret = "no";
|
||||
objRet.err_code = "0001";
|
||||
objRet.message = "尚未登入,請登入後使用";
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
return;
|
||||
}
|
||||
|
||||
if (method == "")
|
||||
{
|
||||
objRet.ret = "no";
|
||||
objRet.err_code = "0003";
|
||||
objRet.message = "無method";
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
return;
|
||||
}
|
||||
|
||||
if (method == "get") {
|
||||
List<ipTable> ipTables = conn.Query<ipTable>("select * from ipTable").ToList();
|
||||
|
||||
foreach (ipTable ipTable in ipTables) {
|
||||
objRet.ipList.Add(ipTable.ipTable_address);
|
||||
}
|
||||
objRet.ret = "yes";
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
return;
|
||||
}
|
||||
|
||||
if (method == "edit") {
|
||||
dynamic ipJsonObj;
|
||||
|
||||
ipJsonObj = JValue.Parse(iplist);
|
||||
|
||||
conn.Execute("delete ipTable");
|
||||
|
||||
foreach (string item in ipJsonObj)
|
||||
{
|
||||
if (item != "") {
|
||||
ipTable newIp = new ipTable();
|
||||
newIp.ipTable_address = item;
|
||||
newIp.ipTable_create_user_uid = "admin";
|
||||
conn.Insert<ipTable>(newIp);
|
||||
}
|
||||
}
|
||||
|
||||
objRet.ret = "yes";
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public class result
|
||||
{
|
||||
public string ret = "no";
|
||||
public string err_code = "0000";
|
||||
public string message = "";
|
||||
public string allowAnyIP = "N";
|
||||
public List<string> ipList = new List<string>();
|
||||
}
|
||||
|
||||
public bool IsReusable
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><!-- End Required meta tags -->
|
||||
<!-- Begin SEO tag -->
|
||||
<title> Error 404: Page not found | Looper - Bootstrap 4 Admin Theme </title>
|
||||
<meta property="og:title" content="Error 404: Page not found">
|
||||
<meta name="author" content="Beni Arisandi">
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Responsive admin theme build on top of Bootstrap 4">
|
||||
<meta property="og:description" content="Responsive admin theme build on top of Bootstrap 4">
|
||||
<link rel="canonical" href="https://uselooper.com">
|
||||
<meta property="og:url" content="https://uselooper.com">
|
||||
<meta property="og:site_name" content="Looper - Bootstrap 4 Admin Theme">
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"name": "Looper - Bootstrap 4 Admin Theme",
|
||||
"description": "Responsive admin theme build on top of Bootstrap 4",
|
||||
"author":
|
||||
{
|
||||
"@type": "Person",
|
||||
"name": "Beni Arisandi"
|
||||
},
|
||||
"@type": "WebSite",
|
||||
"url": "",
|
||||
"headline": "Error 404: Page not found",
|
||||
"@context": "http://schema.org"
|
||||
}
|
||||
</script><!-- End SEO tag -->
|
||||
<!-- Favicons -->
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="assets/apple-touch-icon.png">
|
||||
<link rel="shortcut icon" href="assets/favicon.ico">
|
||||
<meta name="theme-color" content="#3063A0"><!-- Google font -->
|
||||
<link href="https://fonts.googleapis.com/css?family=Fira+Sans:400,500,600" rel="stylesheet"><!-- End Google font -->
|
||||
<!-- BEGIN PLUGINS STYLES -->
|
||||
<link rel="stylesheet" href="assets/vendor/@fortawesome/fontawesome-free/css/all.min.css"><!-- END PLUGINS STYLES -->
|
||||
<!-- BEGIN THEME STYLES -->
|
||||
<link rel="stylesheet" href="assets/stylesheets/theme.min.css" data-skin="default">
|
||||
<link rel="stylesheet" href="assets/stylesheets/theme-dark.min.css" data-skin="dark">
|
||||
<link rel="stylesheet" href="assets/stylesheets/custom.css">
|
||||
<script>
|
||||
var skin = localStorage.getItem('skin') || 'default';
|
||||
var isCompact = JSON.parse(localStorage.getItem('hasCompactMenu'));
|
||||
var disabledSkinStylesheet = document.querySelector('link[data-skin]:not([data-skin="' + skin + '"])');
|
||||
// Disable unused skin immediately
|
||||
disabledSkinStylesheet.setAttribute('rel', '');
|
||||
disabledSkinStylesheet.setAttribute('disabled', true);
|
||||
// add flag class to html immediately
|
||||
if (isCompact == true) document.querySelector('html').classList.add('preparing-compact-menu');
|
||||
</script><!-- END THEME STYLES -->
|
||||
</head>
|
||||
<body>
|
||||
<!--[if lt IE 10]>
|
||||
<div class="page-message" role="alert">You are using an <strong>outdated</strong> browser. Please <a class="alert-link" href="http://browsehappy.com/">upgrade your browser</a> to improve your experience and security.</div>
|
||||
<![endif]-->
|
||||
<!-- .empty-state -->
|
||||
<main id="notfound-state" class="empty-state empty-state-fullpage bg-black">
|
||||
<!-- .empty-state-container -->
|
||||
<div class="empty-state-container">
|
||||
<div class="card">
|
||||
<div class="card-header bg-light text-left">
|
||||
<i class="fa fa-fw fa-circle text-red"></i> <i class="fa fa-fw fa-circle text-yellow"></i> <i class="fa fa-fw fa-circle text-teal"></i>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h1 class="state-header display-1 font-weight-bold">
|
||||
<span>4</span> <i class="far fa-frown text-red"></i> <span>4</span>
|
||||
</h1>
|
||||
<h3> Page not found! </h3>
|
||||
<p class="state-description lead"> Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. </p>
|
||||
<div class="state-action">
|
||||
<a href="auth-error-v1.html" class="btn btn-lg btn-light"><i class="fa fa-angle-right"></i> Go Home</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- /.empty-state-container -->
|
||||
</main><!-- /.empty-state -->
|
||||
<!-- BEGIN BASE JS -->
|
||||
<script src="assets/vendor/jquery/jquery.min.js"></script>
|
||||
<script src="assets/vendor/popper.js/umd/popper.min.js"></script>
|
||||
<script src="assets/vendor/bootstrap/js/bootstrap.min.js"></script> <!-- END BASE JS -->
|
||||
<!-- BEGIN PLUGINS JS -->
|
||||
<script src="assets/vendor/particles.js/particles.js"></script>
|
||||
<script>
|
||||
/**
|
||||
* Keep in mind that your scripts may not always be executed after the theme is completely ready,
|
||||
* you might need to observe the `theme:load` event to make sure your scripts are executed after the theme is ready.
|
||||
*/
|
||||
$(document).on('theme:init', () =>
|
||||
{
|
||||
/* particlesJS.load(@dom-id, @path-json, @callback (optional)); */
|
||||
particlesJS.load('notfound-state', 'assets/javascript/pages/particles-error.json');
|
||||
})
|
||||
</script> <!-- END PLUGINS JS -->
|
||||
<!-- BEGIN THEME JS -->
|
||||
<script src="assets/javascript/theme.min.js"></script> <!-- END THEME JS -->
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
<%@ Page Title="" Language="C#" MasterPageFile="~/BackEnd/Main.Master" AutoEventWireup="true" CodeBehind="ip-management.aspx.cs" Inherits="abbott_2024_event.BackEnd.ip_management" %>
|
||||
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
var formData = {
|
||||
method: 'get'
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "api/ipList.ashx",
|
||||
type: "POST",
|
||||
data: formData,
|
||||
success: function (data, textStatus, jqXHR) {
|
||||
if (data.ret == "yes") {
|
||||
//$("input[name=rdGroup3][value=" + data.allowAnyIP + "]").prop("checked", true);
|
||||
|
||||
$.each(data.ipList, function (i, item) {
|
||||
$("#ip_list").val($("#ip_list").val() + item + "\n");
|
||||
});
|
||||
|
||||
|
||||
} else {
|
||||
alert(data.message);
|
||||
}
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
alert('网絡或伺服器发生错误,请稍后重试!');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$("#saveBtn").click(function () {
|
||||
var array = $("#ip_list").val().split("\n");
|
||||
var iplist = JSON.stringify(array);
|
||||
var allowAnyIP = $('input[name*=rdGroup3]:checked').val();
|
||||
|
||||
var formData = {
|
||||
method: 'edit',
|
||||
iplist: iplist
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "api/ipList.ashx",
|
||||
type: "POST",
|
||||
data: formData,
|
||||
success: function (data, textStatus, jqXHR) {
|
||||
if (data.ret == "yes") {
|
||||
alert("套用成功");
|
||||
|
||||
} else {
|
||||
alert(data.message);
|
||||
}
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
alert('网絡或伺服器发生错误,请稍后重试!');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
|
||||
<!-- .page-inner -->
|
||||
<div class="page-inner">
|
||||
<!-- .page-title-bar -->
|
||||
<header class="page-title-bar">
|
||||
<!-- .breadcrumb -->
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item active">
|
||||
<a href="#">
|
||||
<i class="breadcrumb-icon fa fa-angle-left mr-2"></i>允許IP清單</a>
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<!-- title and toolbar -->
|
||||
<div class="d-md-flex align-items-md-start">
|
||||
<h1 class="page-title mr-sm-auto">IP清單 </h1>
|
||||
<!-- .btn-toolbar -->
|
||||
<div id="dt-buttons" class="btn-toolbar"></div>
|
||||
<!-- /.btn-toolbar -->
|
||||
</div>
|
||||
<!-- /title and toolbar -->
|
||||
</header>
|
||||
<div class="page-section">
|
||||
<!-- .card -->
|
||||
<section class="card card-fluid">
|
||||
<!-- .card-body -->
|
||||
<div class="card-body">
|
||||
<!-- .form-row -->
|
||||
<div class="form-row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="rd7">IP白名單</label>
|
||||
|
||||
<div class="custom-control custom-radio mb-1">
|
||||
|
||||
<div class="mt-1">
|
||||
<textarea id="ip_list" class="form-control" rows="6" placeholder="允許存取的IP位置,以換行分隔"></textarea>
|
||||
</div>
|
||||
<div class="text-muted">請在上方輸入可以存取的IP位置,每行一組IP。 </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<button type="button" class="btn btn-primary" id="saveBtn">套用設定</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</asp:Content>
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
|
||||
namespace abbott_2024_event.BackEnd
|
||||
{
|
||||
public partial class ip_management : System.Web.UI.Page
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <自動產生>
|
||||
// 這段程式碼是由工具產生的。
|
||||
//
|
||||
// 變更這個檔案可能會導致不正確的行為,而且如果已重新產生
|
||||
// 程式碼,則會遺失變更。
|
||||
// </自動產生>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace abbott_2024_event.BackEnd
|
||||
{
|
||||
|
||||
|
||||
public partial class ip_management
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -13152,7 +13152,10 @@
|
|||
<Content Include="BackEnd\assets\vendor\wnumb\wNumb.min.js" />
|
||||
<Content Include="BackEnd\assets\vendor\zxcvbn\._zxcvbn.js" />
|
||||
<Content Include="BackEnd\assets\vendor\zxcvbn\zxcvbn.js" />
|
||||
<Content Include="BackEnd\auth-error-v3.html" />
|
||||
<Content Include="BackEnd\Index.aspx" />
|
||||
<Content Include="BackEnd\ip-management.aspx" />
|
||||
<Content Include="BackEnd\Login.aspx" />
|
||||
<Content Include="BackEnd\Login.html" />
|
||||
<Content Include="Default.aspx" />
|
||||
<Content Include="favicon.ico" />
|
||||
|
|
@ -13162,6 +13165,12 @@
|
|||
<Compile Include="App_Code\authToken.cs" />
|
||||
<Compile Include="App_Code\globalClass.cs" />
|
||||
<Compile Include="App_Code\dbClass.cs" />
|
||||
<Compile Include="BackEnd\api\importTestData.ashx.cs">
|
||||
<DependentUpon>importTestData.ashx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BackEnd\api\ipList.ashx.cs">
|
||||
<DependentUpon>ipList.ashx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BackEnd\api\signin.ashx.cs">
|
||||
<DependentUpon>signin.ashx</DependentUpon>
|
||||
</Compile>
|
||||
|
|
@ -13172,6 +13181,20 @@
|
|||
<Compile Include="BackEnd\Index.aspx.designer.cs">
|
||||
<DependentUpon>Index.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BackEnd\ip-management.aspx.cs">
|
||||
<DependentUpon>ip-management.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="BackEnd\ip-management.aspx.designer.cs">
|
||||
<DependentUpon>ip-management.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BackEnd\Login.aspx.cs">
|
||||
<DependentUpon>Login.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="BackEnd\Login.aspx.designer.cs">
|
||||
<DependentUpon>Login.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BackEnd\Main.Master.cs">
|
||||
<DependentUpon>Main.Master</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
|
|
@ -13187,10 +13210,12 @@
|
|||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="webapi\babyData.ashx.cs">
|
||||
<DependentUpon>babyData.ashx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
<Folder Include="BackEnd\assets\BackEndApi\" />
|
||||
<Folder Include="BackEnd\assets\vendor\%40fortawesome\fontawesome-free\less\" />
|
||||
<Folder Include="BackEnd\assets\vendor\%40fortawesome\fontawesome-free\metadata\" />
|
||||
<Folder Include="BackEnd\assets\vendor\%40fortawesome\fontawesome-free\scss\" />
|
||||
|
|
@ -17653,6 +17678,8 @@
|
|||
<Content Include="BackEnd\assets\vendor\zxcvbn\zxcvbn.js.map" />
|
||||
<Content Include="BackEnd\Main.Master" />
|
||||
<Content Include="BackEnd\api\signin.ashx" />
|
||||
<Content Include="BackEnd\api\importTestData.ashx" />
|
||||
<Content Include="BackEnd\api\ipList.ashx" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Web.Debug.config">
|
||||
<DependentUpon>Web.config</DependentUpon>
|
||||
|
|
@ -17660,6 +17687,7 @@
|
|||
<None Include="Web.Release.config">
|
||||
<DependentUpon>Web.config</DependentUpon>
|
||||
</None>
|
||||
<Content Include="webapi\babyData.ashx" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
<%@ WebHandler Language="C#" CodeBehind="babyData.ashx.cs" Class="abbott_2024_event.webapi.babyData" %>
|
||||
|
|
@ -0,0 +1,245 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Runtime.Serialization.Json;
|
||||
using System.Web.SessionState;
|
||||
using Dapper;
|
||||
using Dapper.Contrib.Extensions;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace abbott_2024_event.webapi
|
||||
{
|
||||
/// <summary>
|
||||
/// babyData 的摘要描述
|
||||
/// </summary>
|
||||
public class babyDataAshx : IHttpHandler
|
||||
{
|
||||
SqlConnection conn = new SqlConnection(globalClass.appsettings("DBConnectionString"));
|
||||
public void ProcessRequest(HttpContext context)
|
||||
{
|
||||
result objRet = new result();
|
||||
DataContractJsonSerializer json = new DataContractJsonSerializer(objRet.GetType());
|
||||
context.Response.ContentType = "application/json;charset=utf-8";
|
||||
|
||||
string name = (context.Request["name"] == null) ? "" : context.Request["name"].ToString();
|
||||
string birthday = (context.Request["birthday"] == null) ? "" : context.Request["birthday"].ToString();
|
||||
string gender = (context.Request["gender"] == null) ? "" : context.Request["gender"].ToString();
|
||||
string height = (context.Request["height"] == null) ? "" : context.Request["height"].ToString();
|
||||
string line_uid = (context.Request["line_uid"] == null) ? "" : context.Request["line_uid"].ToString();
|
||||
string line_displayname = (context.Request["line_displayname"] == null) ? "" : context.Request["line_displayname"].ToString();
|
||||
string babyData_uid = (context.Request["babyData_uid"] == null) ? "" : context.Request["babyData_uid"].ToString();
|
||||
|
||||
|
||||
string babyRec_key = globalClass.CreateRandomCode(32);
|
||||
|
||||
|
||||
string delSQLDatastring = string.Format("delete babyData where line_uid = '' and babyData_createdate <= '{0}'", DateTime.Now.AddDays(-5).ToString("yyyy/MM/dd 23:59:59"));
|
||||
string delSQLRecstring = string.Format("delete babyRec where line_uid = '' and babyRec_createdate <= '{0}'", DateTime.Now.AddDays(-5).ToString("yyyy/MM/dd 23:59:59"));
|
||||
|
||||
conn.Execute(delSQLDatastring);
|
||||
conn.Execute(delSQLRecstring);
|
||||
|
||||
|
||||
|
||||
if (babyData_uid == "" && name == "") {
|
||||
objRet.ret = "no";
|
||||
objRet.err_code = "1001";
|
||||
objRet.message = "請輸入寶貝姓名!";
|
||||
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
}
|
||||
|
||||
DateTime dateBirthDay;
|
||||
|
||||
if (babyData_uid == "") {
|
||||
try
|
||||
{
|
||||
dateBirthDay = DateTime.Parse(birthday + " 23:59:59");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
objRet.ret = "no";
|
||||
objRet.err_code = "1002";
|
||||
objRet.message = "請輸入正確的寶貝生日!" + ex.Message;
|
||||
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (babyData_uid == "" && gender != "M" && gender != "F") {
|
||||
objRet.ret = "no";
|
||||
objRet.err_code = "1003";
|
||||
objRet.message = "請輸入正確的寶貝性別!";
|
||||
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
}
|
||||
|
||||
double dblHeight;
|
||||
|
||||
try
|
||||
{
|
||||
dblHeight = Double.Parse(height);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
objRet.ret = "no";
|
||||
objRet.err_code = "1004";
|
||||
objRet.message = "請輸入寶貝身高!" + ex.Message;
|
||||
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
}
|
||||
|
||||
if (line_uid != null) {
|
||||
lineUser lineUser = conn.QueryFirstOrDefault<lineUser>("select * from lineUser where line_uid = @line_uid", new { line_uid = line_uid });
|
||||
|
||||
if (lineUser != null)
|
||||
{
|
||||
if (line_displayname != lineUser.line_displayName && line_displayname != "")
|
||||
{
|
||||
lineUser.line_displayName = line_displayname;
|
||||
lineUser.lineUser_modifydate = DateTime.Now;
|
||||
conn.Update<lineUser>(lineUser);
|
||||
}
|
||||
|
||||
List<babyData> babyDatas = conn.Query<babyData>("select * from babyData where line_uid = @line_uid", new { line_uid = line_uid }).ToList();
|
||||
|
||||
if (babyDatas.Count > 0) {
|
||||
objRet.more_data = "Y";
|
||||
}
|
||||
}
|
||||
else {
|
||||
lineUser = new lineUser();
|
||||
|
||||
if (line_displayname == null) {
|
||||
objRet.ret = "no";
|
||||
objRet.err_code = "1005";
|
||||
objRet.message = "請輸入Line Display Name!";
|
||||
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
}
|
||||
|
||||
lineUser.lineUser_uid = globalClass.CreateRandomCode(32);
|
||||
lineUser.line_uid = line_uid;
|
||||
lineUser.line_displayName = line_displayname;
|
||||
|
||||
conn.Insert<lineUser>(lineUser);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
babyData newBaby;
|
||||
|
||||
if (babyData_uid == "")
|
||||
{
|
||||
babyData_uid = globalClass.CreateRandomCode(32);
|
||||
|
||||
newBaby = new babyData();
|
||||
newBaby.babyData_uid = babyData_uid;
|
||||
newBaby.babyData_birthday = DateTime.Parse(birthday + " 23:59:59");
|
||||
newBaby.babyData_name = name;
|
||||
newBaby.babyData_sexual = gender;
|
||||
|
||||
if (line_uid != "")
|
||||
{
|
||||
newBaby.line_uid = line_uid;
|
||||
newBaby.babyData_bindedLine = "Y";
|
||||
newBaby.babyData_bindeddate = DateTime.Now;
|
||||
}
|
||||
|
||||
conn.Insert<babyData>(newBaby);
|
||||
}
|
||||
else {
|
||||
newBaby = conn.QueryFirstOrDefault<babyData>("select * from babyData where babyData_uid = @babyData_uid", new { babyData_uid = babyData_uid });
|
||||
|
||||
if (newBaby == null) {
|
||||
objRet.ret = "no";
|
||||
objRet.err_code = "1008";
|
||||
objRet.message = "無此babyData_uid的寶貝資料!";
|
||||
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
}
|
||||
|
||||
babyData_uid = newBaby.babyData_uid;
|
||||
}
|
||||
|
||||
|
||||
|
||||
babyRec newRec = new babyRec();
|
||||
newRec.babyData_uid = babyData_uid;
|
||||
newRec.line_uid = line_uid;
|
||||
newRec.babyRec_key = babyRec_key;
|
||||
newRec.babyRec_recdate = DateTime.Now;
|
||||
newRec.babyRec_uid = "r_" + globalClass.CreateRandomCode(32);
|
||||
newRec.babyRec_recYear = newRec.babyRec_recdate.Year;
|
||||
newRec.babyRec_recMonth = newRec.babyRec_recdate.Month;
|
||||
newRec.babyRec_recDay = newRec.babyRec_recdate.Day;
|
||||
newRec.babyRec_height = double.Parse(height);
|
||||
newRec.babyRec_months = globalClass.MonthDiff(newBaby.babyData_birthday, newRec.babyRec_recdate);
|
||||
newRec.babyRec_yearMonthStr = globalClass.YearMonthDiff(newBaby.babyData_birthday, newRec.babyRec_recdate);
|
||||
|
||||
if (newRec.babyRec_months > 120) {
|
||||
objRet.ret = "no";
|
||||
objRet.err_code = "1006";
|
||||
objRet.message = "寶貝年齡超過10歲,已過紀錄範圍!";
|
||||
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
}
|
||||
|
||||
if (line_uid != "") {
|
||||
|
||||
}
|
||||
|
||||
lenHeiTable objLenHei = conn.QueryFirstOrDefault("select * from lenHeiTable where lenHeiTable_sexual = @gender and lenHeiTable_month = @month and lenHeiTable_minVal < @height1 and lenHeiTable_maxVal >= @height2 ", new { gender = gender, month = newRec.babyRec_months, height1 = height, height2 = height});
|
||||
lenHeiTable objMidHei = conn.QueryFirstOrDefault("select * from lenHeiTable where lenHeiTable_sexual = @gender and lenHeiTable_month = @month and lenHeiTable_percent = 50", new { gender = gender, month=newRec.babyRec_months });
|
||||
|
||||
if (objLenHei == null) {
|
||||
objRet.ret = "no";
|
||||
objRet.err_code = "1007";
|
||||
objRet.message = "無符合此身高年齡條件的數據!";
|
||||
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
}
|
||||
|
||||
newRec.babyRec_inpercent = objLenHei.lenHeiTable_percent;
|
||||
newRec.babyRec_middleHeight = objMidHei.lenHeiTable_maxVal;
|
||||
|
||||
conn.Insert<babyRec>(newRec);
|
||||
|
||||
objRet.temp_key = babyRec_key;
|
||||
objRet.baby_data.baby_birthday = birthday;
|
||||
objRet.baby_data.baby_height = newRec.babyRec_height;
|
||||
objRet.baby_data.baby_age = newRec.babyRec_yearMonthStr;
|
||||
objRet.baby_data.average_height = newRec.babyRec_middleHeight;
|
||||
objRet.ret = "yes";
|
||||
|
||||
json.WriteObject(context.Response.OutputStream, objRet);
|
||||
}
|
||||
|
||||
public class result
|
||||
{
|
||||
public string ret = "no";
|
||||
public string err_code = "0000";
|
||||
public string message = "";
|
||||
public string temp_key = "";
|
||||
public string more_data = "N";
|
||||
public baby baby_data = new baby();
|
||||
}
|
||||
|
||||
public class baby
|
||||
{
|
||||
public string baby_birthday { get; set; } = "";
|
||||
public string baby_age { get; set; } = "";
|
||||
public double baby_height { get; set; } = 0.0;
|
||||
public double average_height { get; set; } = 0.0;
|
||||
}
|
||||
|
||||
public bool IsReusable
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue