From ed3015095f1b0e88bc579877c678a3fac191381f Mon Sep 17 00:00:00 2001
From: username@email.com <yzy2002yzy@163.com>
Date: 星期一, 28 六月 2021 14:32:26 +0800
Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/zhengcaioa

---
 zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs |  187 +++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 166 insertions(+), 21 deletions(-)

diff --git a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs
index bedb534..bab1b0c 100644
--- a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs
+++ b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs
@@ -11,6 +11,7 @@
 using Microsoft.AspNetCore.Http;
 using Newtonsoft.Json.Linq;
 using System.Transactions;
+using System.Runtime.InteropServices;
 
 namespace zhengcaioa.Controllers.AdmManagement
 {
@@ -85,12 +86,88 @@
         /// <param name="signinType">10鏃╀笂涓婄彮  11鏃╀笂涓嬬彮  20涓嬪崍涓婄彮   21涓嬪崍涓嬬彮   30鍔犵彮涓婄彮  31鍔犵彮涓嬬彮</param>
         /// <returns></returns>
         [CheckLogin]
-        public string Save(string id,int signinType) 
-        {                      
-            ResultEntity resultEntity = _signinService.save(id, signinType);
+        public string Save(string id,int signinType,string mac) 
+        {
+            ResultEntity resultEntity = new ResultEntity();
+            resultEntity.Result = false;
+            try
+            {
+                if (string.IsNullOrEmpty(mac))
+                {
+                    resultEntity = _signinService.save(id, signinType);
+                }
+                else
+                {
+                    var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
+                    if(curentuser.IpMac == mac)
+                    {
+                        //var mac = GetClientMAC(GetClientIP());
+
+                    }
+                    else
+                    {
+                        resultEntity.Message = "鎵撳崱鐢佃剳妫�鏌ヤ笉鍖归厤銆�";
+                    }                    
+                }
+            }
+            catch(Exception er)
+            { }
             return JsonConvert.SerializeObject(resultEntity);
         }
 
+
+        [DllImport("Iphlpapi.dll")]
+        private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
+
+        [DllImport("Ws2_32.dll")]
+        private static extern Int32 inet_addr(string ip);
+
+        private string GetClientIP()
+        {
+            HttpContextAccessor context = new HttpContextAccessor();
+            var ip = context.HttpContext?.Connection.RemoteIpAddress.ToString();
+            var mac = GetClientMAC(ip);
+            var str = "IP:" + ip + "   锛孧AC:" + mac;
+            return str;
+        }
+
+        private string GetClientMAC(string ip)
+        {
+            string mac_dest = string.Empty;
+            try
+            { 
+                Int32 ldest = inet_addr(ip); //鐩殑鍦扮殑ip 
+                Int32 lhost = inet_addr(""); //鏈嶅姟鍣ㄧ殑ip 
+                Int64 macinfo = new Int64();
+                Int32 len = 6;
+                int res = SendARP(ldest, 0, ref macinfo, ref len);
+                string mac_src = macinfo.ToString("X");
+                while (mac_src.Length < 12)
+                {
+                    mac_src = mac_src.Insert(0, "0");
+                }
+                for (int i = 0; i < 11; i++)
+                {
+                    if (0 == (i % 2))
+                    {
+                        if (i == 10)
+                        {
+                            mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2));
+                        }
+                        else
+                        {
+                            mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2));
+                        }
+
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+            return mac_dest;
+        }
 
         /// <summary>
         /// 鍙栧緱浠婂ぉ绛惧埌淇℃伅
@@ -119,7 +196,7 @@
         }
         #endregion
         #region 璇峰亣涓庨攢鍋�
-         public IActionResult AskLeave(string id="", DateTime? StratTimeName = null, DateTime? EndTimeName = null)
+         public IActionResult AskLeave(string id="", string StratTimeName = "", string EndTimeName = "")
         {
 
             var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
@@ -143,14 +220,35 @@
 
 
 
-            if (StratTimeName.HasValue)
+            if (!string.IsNullOrWhiteSpace(StratTimeName))
             {
-                admAskLeaveDTO.StratTimeName = StratTimeName.Value.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+                DateTime StratTimeName1;
+                if(DateTime.TryParse(StratTimeName, out StratTimeName1))
+                {
+                    admAskLeaveDTO.StratTimeName = StratTimeName1.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+
+                }
+
+            }
+            else
+            {
+                admAskLeaveDTO.StratTimeName =DateTime.Now.Date.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+
             }
 
-            if (EndTimeName.HasValue)
+            if (!string.IsNullOrWhiteSpace(EndTimeName))
             {
-                admAskLeaveDTO.EndTimeName = EndTimeName.Value.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+                DateTime EndTimeName1;
+                if (DateTime.TryParse(EndTimeName, out EndTimeName1))
+                {
+                    admAskLeaveDTO.EndTimeName = EndTimeName1.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+
+                }
+            }
+            else
+            {
+                admAskLeaveDTO.EndTimeName = DateTime.Now.Date.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+
             }
 
             AdmAskLeaveDTO admAsk = jisianChecktime(DateTime.Parse(admAskLeaveDTO.StratTimeName), DateTime.Parse(admAskLeaveDTO.EndTimeName));
@@ -340,7 +438,7 @@
                     if ((int)StratTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)StratTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd)
                     {
                         //鏄惁鑺傚亣鏃�
-                        if (jiejiari.Exists(x => x.ValueStart <= StratTime.Date && x.ValueStart >= StratTime.Date))
+                        if (jiejiari.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
                         {
 
                             LavehTime += 0;
@@ -389,7 +487,7 @@
                     {
 
                         //鏄惁璋冧紤鏃�  璋冧紤鏃ラ渶瑕佷笂鐝�
-                        if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueStart >= StratTime.Date))
+                        if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
                         {
                             if (StratTime <= StratTimeWorkingStart)
                             {
@@ -435,7 +533,7 @@
                     if ((int)EndTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)EndTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd)
                     {
                         //鏄惁鑺傚亣鏃�
-                        if (jiejiari.Exists(x => x.ValueStart <= EndTime.Date && x.ValueStart >= EndTime.Date))
+                        if (jiejiari.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date))
                         {
 
                             LavehTime += 0;
@@ -485,7 +583,7 @@
                     {
 
                         //鏄惁璋冧紤鏃�  璋冧紤鏃ラ渶瑕佷笂鐝�
-                        if (tiaoxiuri.Exists(x => x.ValueStart <= EndTime.Date && x.ValueStart >= EndTime.Date))
+                        if (tiaoxiuri.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date))
                         {
                             if (EndTime >= EndTimeOffworkEnd)
                             {
@@ -534,7 +632,7 @@
                     if ((int)dateTimenow.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)dateTimenow.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd)
                     {
                         //鏄惁鍋囨湡 鍋囨湡涓嶄笂鐝�
-                        if (jiejiari.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueStart >= dateTimenow.Date))
+                        if (jiejiari.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueEnd >= dateTimenow.Date))
                         {
                             LavehTime += 0;
                         }
@@ -547,7 +645,7 @@
                     {
 
                         //鏄惁璋冧紤鏃�  璋冧紤鏃ラ渶瑕佷笂鐝�
-                        if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueStart >= StratTime.Date))
+                        if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
                         {
                             LavehTime += shangbanshijian;
                         }
@@ -560,8 +658,32 @@
 
 
                 if(ts.Days == 0)
-                {
-                    LavehTime -= shangbanshijian;
+                { //鏄惁涓婄彮鏃ユ湡
+                    if ((int)StratTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)StratTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd)
+                    {
+                        //鏄惁鑺傚亣鏃�
+                        if (jiejiari.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
+                        {
+                            LavehTime -= 0;
+                        }
+                        else
+                        {
+                            LavehTime -= shangbanshijian;
+                        }
+                    }
+                    else
+                    {
+                        //鏄惁璋冧紤鏃�  璋冧紤鏃ラ渶瑕佷笂鐝�
+                        if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
+                        {
+                            LavehTime -= shangbanshijian;
+                        }
+                        else
+                        {
+                            LavehTime -= 0;
+                        }
+                    }
+                          
                 }
                
             }
@@ -592,7 +714,7 @@
             return admAsk;
         }
 
-        public IActionResult AskLeaveOff(string id = "", DateTime? StratTimeName = null, DateTime? EndTimeName = null)
+        public IActionResult AskLeaveOff(string id = "", string StratTimeName = "", string EndTimeName = "")
         {
             var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
             ViewData["curentuser"] = curentuser;
@@ -617,14 +739,35 @@
 
 
 
-            if (StratTimeName.HasValue)
+            if (!string.IsNullOrWhiteSpace(StratTimeName))
             {
-                askLeaveOffDTO.StratTimeName = StratTimeName.Value.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+                DateTime StratTimeName1;
+                if (DateTime.TryParse(StratTimeName, out StratTimeName1))
+                {
+                    askLeaveOffDTO.StratTimeName = StratTimeName1.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+
+                }
+
+            }
+            else
+            {
+                askLeaveOffDTO.StratTimeName = DateTime.Now.Date.AddHours(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.WorkingStart.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+
             }
 
-            if (EndTimeName.HasValue)
+            if (!string.IsNullOrWhiteSpace(EndTimeName))
             {
-                askLeaveOffDTO.EndTimeName = EndTimeName.Value.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+                DateTime EndTimeName1;
+                if (DateTime.TryParse(EndTimeName, out EndTimeName1))
+                {
+                    askLeaveOffDTO.EndTimeName = EndTimeName1.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+
+                }
+            }
+            else
+            {
+                askLeaveOffDTO.EndTimeName = DateTime.Now.Date.AddHours(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[0])).AddMinutes(double.Parse(admAttendanceRuleDTO.OffworkEnd.Split('.')[1])).ToString("yyyy-MM-dd HH:mm");
+
             }
 
             ResultDataEntity<SysAttachmentDTO> results = new ResultDataEntity<SysAttachmentDTO>();
@@ -749,6 +892,8 @@
             ViewData["curentuser"] = curentuser;
             using (TransactionScope scope = new TransactionScope())
             {
+                dto.FullAttendance = 0;
+                dto.AbsenteeismPayment2 = 0;
                 dto.RecStatus = "A";
                 if (String.IsNullOrEmpty(dto.Id))
                 {

--
Gitblit v1.9.1