รวม code แก้ OP รอบใหม่
This commit is contained in:
22
Models/eva_temp_fingerscan/Ieva_temp_fingerscanService.cs
Normal file
22
Models/eva_temp_fingerscan/Ieva_temp_fingerscanService.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using TTSW.EF;
|
||||
using TTSW.Utils;
|
||||
using TTSW.Constant;
|
||||
using TTSW.Common;
|
||||
using TodoAPI2.Models;
|
||||
|
||||
namespace TodoAPI2.Models
|
||||
{
|
||||
public interface Ieva_temp_fingerscanService
|
||||
{
|
||||
List<eva_temp_fingerscanViewModel> GetListBybadgenumber(string badgenumber);
|
||||
List<eva_temp_fingerscanViewModel> GetListBySearch(eva_temp_fingerscanSearchModel model);
|
||||
eva_temp_fingerscanWithSelectionViewModel GetBlankItem();
|
||||
string InsertFingerScanToHR(List<string> model);
|
||||
string RecieveFingerScanFromLocal(List<fingerscanDataModel> model);
|
||||
}
|
||||
}
|
||||
|
||||
32
Models/eva_temp_fingerscan/eva_temp_fingerscanEntity.cs
Normal file
32
Models/eva_temp_fingerscan/eva_temp_fingerscanEntity.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using TTSW.EF;
|
||||
using TTSW.Utils;
|
||||
using TTSW.Constant;
|
||||
using TTSW.Common;
|
||||
using System.IO;
|
||||
|
||||
namespace TodoAPI2.Models
|
||||
{
|
||||
public class eva_temp_fingerscanEntity : BaseEntity2<string>
|
||||
{
|
||||
|
||||
|
||||
[MaxLength(255)]
|
||||
public string badgenumber { get; set; }
|
||||
|
||||
[MaxLength(255)]
|
||||
public string firstname { get; set; }
|
||||
|
||||
[MaxLength(255)]
|
||||
public string lastname { get; set; }
|
||||
|
||||
public DateTime? checktime { get; set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
30
Models/eva_temp_fingerscan/eva_temp_fingerscanInputModel.cs
Normal file
30
Models/eva_temp_fingerscan/eva_temp_fingerscanInputModel.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using TTSW.EF;
|
||||
using TTSW.Utils;
|
||||
using TTSW.Constant;
|
||||
using TTSW.Common;
|
||||
|
||||
namespace TodoAPI2.Models
|
||||
{
|
||||
public class eva_temp_fingerscanInputModel
|
||||
{
|
||||
|
||||
public Guid? id { get; set; }
|
||||
|
||||
public string badgenumber { get; set; }
|
||||
|
||||
public string firstname { get; set; }
|
||||
|
||||
public string lastname { get; set; }
|
||||
|
||||
public DateTime? checktime { get; set; }
|
||||
|
||||
public string active_mode { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using TTSW.EF;
|
||||
using TTSW.Utils;
|
||||
using TTSW.Constant;
|
||||
using TTSW.Common;
|
||||
|
||||
namespace TodoAPI2.Models
|
||||
{
|
||||
public class eva_temp_fingerscanReportRequestModel : eva_temp_fingerscanSearchModel
|
||||
{
|
||||
public string filetype { get; set; }
|
||||
|
||||
public string contentType { get { return MyHelper.GetContentType(filetype); } }
|
||||
}
|
||||
}
|
||||
|
||||
29
Models/eva_temp_fingerscan/eva_temp_fingerscanSearchModel.cs
Normal file
29
Models/eva_temp_fingerscan/eva_temp_fingerscanSearchModel.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using TTSW.EF;
|
||||
using TTSW.Utils;
|
||||
using TTSW.Constant;
|
||||
using TTSW.Common;
|
||||
|
||||
namespace TodoAPI2.Models
|
||||
{
|
||||
public class eva_temp_fingerscanSearchModel
|
||||
{
|
||||
|
||||
public Guid id { get; set; }
|
||||
|
||||
public string badgenumber { get; set; }
|
||||
|
||||
public string firstname { get; set; }
|
||||
|
||||
public string lastname { get; set; }
|
||||
|
||||
public DateTime? checktime { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
270
Models/eva_temp_fingerscan/eva_temp_fingerscanService.cs
Normal file
270
Models/eva_temp_fingerscan/eva_temp_fingerscanService.cs
Normal file
@@ -0,0 +1,270 @@
|
||||
using AutoMapper;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using TTSW.EF;
|
||||
using TTSW.Utils;
|
||||
using TTSW.Constant;
|
||||
using TTSW.Common;
|
||||
using TodoAPI2.Models;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Net;
|
||||
using TTSW.Configure;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System.Data;
|
||||
using System.Data.Odbc;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace TodoAPI2.Models
|
||||
{
|
||||
public class eva_temp_fingerscanService : Ieva_temp_fingerscanService
|
||||
{
|
||||
private IBaseRepository2<eva_temp_fingerscanEntity, string> _repository;
|
||||
private IMyDatabase db;
|
||||
private Iexternal_linkageService ext;
|
||||
private Iexternal_employeeService emp;
|
||||
private IConfiguration Configuration { get; set; }
|
||||
public eva_temp_fingerscanService(IBaseRepository2<eva_temp_fingerscanEntity, string> repository, IMyDatabase mydb,
|
||||
Iexternal_linkageService inext, Iexternal_employeeService inemp, IConfiguration configuration)
|
||||
{
|
||||
_repository = repository;
|
||||
db = mydb;
|
||||
ext = inext;
|
||||
emp = inemp;
|
||||
Configuration = configuration;
|
||||
}
|
||||
|
||||
public eva_temp_fingerscanWithSelectionViewModel GetBlankItem()
|
||||
{
|
||||
var i = new eva_temp_fingerscanWithSelectionViewModel();
|
||||
i.checktime = DateTime.Now;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
public List<eva_temp_fingerscanViewModel> GetListBybadgenumber(string badgenumber)
|
||||
{
|
||||
var model = new eva_temp_fingerscanSearchModel();
|
||||
model.badgenumber = badgenumber;
|
||||
return GetListBySearch(model);
|
||||
}
|
||||
|
||||
private string GetDateStringForDB(DateTime d)
|
||||
{
|
||||
string year = d.Year.ToString();
|
||||
string month = d.Month.ToString();
|
||||
if (d.Month < 10)
|
||||
{
|
||||
month = "0" + month;
|
||||
}
|
||||
string day = d.Day.ToString();
|
||||
if (d.Day < 10)
|
||||
{
|
||||
day = "0" + day;
|
||||
}
|
||||
|
||||
return year + "-" + month + "-" + day;
|
||||
}
|
||||
|
||||
private string GetTimeStringForDB(DateTime d)
|
||||
{
|
||||
string hour = d.Hour.ToString();
|
||||
if (d.Hour < 10)
|
||||
{
|
||||
hour = "0" + hour;
|
||||
}
|
||||
string minute = d.Minute.ToString();
|
||||
if (d.Minute < 10)
|
||||
{
|
||||
minute = "0" + minute;
|
||||
}
|
||||
|
||||
return hour + ":" + minute;
|
||||
}
|
||||
|
||||
public List<eva_temp_fingerscanViewModel> GetListBySearch(eva_temp_fingerscanSearchModel model)
|
||||
{
|
||||
//var all_emp = emp.GetListByemployee_type(null, null);
|
||||
|
||||
//if (!model.checktime.HasValue) return null;
|
||||
|
||||
//string connectionString = Configuration.GetConnectionString("fingerScanConnectionString");
|
||||
//List<eva_temp_fingerscanViewModel> data = null;
|
||||
|
||||
//List<userinfo> userinfo_data = new List<userinfo>();
|
||||
//List<checkinout> checkinout_data = new List<checkinout>();
|
||||
|
||||
//using (OdbcConnection odbcConnection = new OdbcConnection(connectionString))
|
||||
//{
|
||||
// odbcConnection.Open();
|
||||
|
||||
// using (var command = odbcConnection.CreateCommand())
|
||||
// {
|
||||
// command.CommandType = System.Data.CommandType.Text;
|
||||
// command.CommandText = "select Badgenumber,userid,name,lastname from USERINFO";
|
||||
// OdbcDataReader reader = command.ExecuteReader();
|
||||
|
||||
// while (reader.Read())
|
||||
// {
|
||||
// userinfo info = new userinfo();
|
||||
// info.badgenumber = Convert.ToString(reader[0]);
|
||||
// info.userid = Convert.ToString(reader["userid"]);
|
||||
// info.name = Convert.ToString(reader["name"]);
|
||||
// info.lastname = Convert.ToString(reader["lastname"]);
|
||||
// userinfo_data.Add(info);
|
||||
// }
|
||||
// }
|
||||
|
||||
// odbcConnection.Close();
|
||||
//}
|
||||
|
||||
//using (OdbcConnection odbcConnection2 = new OdbcConnection(connectionString))
|
||||
//{
|
||||
// odbcConnection2.Open();
|
||||
|
||||
// using (var command2 = odbcConnection2.CreateCommand())
|
||||
// {
|
||||
// command2.CommandType = System.Data.CommandType.Text;
|
||||
// command2.CommandText = "select CHECKTIME,userid from checkinout";
|
||||
// OdbcDataReader reader2 = command2.ExecuteReader();
|
||||
// while (reader2.Read())
|
||||
// {
|
||||
// checkinout inout = new checkinout();
|
||||
// inout.checktime = Convert.ToDateTime(reader2["CHECKTIME"]);
|
||||
// inout.userid = Convert.ToString(reader2["userid"]);
|
||||
// checkinout_data.Add(inout);
|
||||
// }
|
||||
// }
|
||||
// odbcConnection2.Close();
|
||||
//}
|
||||
|
||||
//data = (from i in checkinout_data
|
||||
// join j in userinfo_data on i.userid equals j.userid
|
||||
// join e in all_emp on j.badgenumber equals e.position_number
|
||||
// where GetDateStringForDB(i.checktime) == GetDateStringForDB(model.checktime.Value)
|
||||
// orderby i.checktime descending
|
||||
// select new eva_temp_fingerscanViewModel()
|
||||
// {
|
||||
// badgenumber = j.badgenumber,
|
||||
// checktime = i.checktime,
|
||||
// fullname_in_finger_scan = j.name + " " + j.lastname,
|
||||
// fullname_in_system = e.fullname,
|
||||
// txt_checktime = GetDateStringForDB(i.checktime) + " " + GetTimeStringForDB(i.checktime),
|
||||
// id = e.id.ToString() + "#" + GetDateStringForDB(i.checktime) + "#" + GetTimeStringForDB(i.checktime)
|
||||
// }).ToList();
|
||||
|
||||
//return data;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private string ClearName(string fullname)
|
||||
{
|
||||
return fullname.Replace(" ", "")
|
||||
.Replace("นาย", "")
|
||||
.Replace("นางสาว", "")
|
||||
.Replace("นาง", "")
|
||||
.Replace("น.ส.", "")
|
||||
.Replace("ผศ.ดร.", "");
|
||||
}
|
||||
|
||||
public string RecieveFingerScanFromLocal(List<fingerscanDataModel> model)
|
||||
{
|
||||
var all_emp = emp.GetListByemployee_type(null, null);
|
||||
|
||||
var result = (from i in model
|
||||
join e in all_emp on ClearName(i.fullname) equals ClearName(e.halfname)
|
||||
select e.id.ToString() + "#" + GetDateStringForDB(i.checktime) + "#" + GetTimeStringForDB(i.checktime)).ToList();
|
||||
|
||||
return InsertFingerScanToHR(result);
|
||||
}
|
||||
|
||||
public string InsertFingerScanToHR(List<string> model)
|
||||
{
|
||||
int count_insert = 0;
|
||||
foreach (var i in model)
|
||||
{
|
||||
var data = i.Split('#');
|
||||
string employee_id = data[0];
|
||||
string date = data[1];
|
||||
string time = data[2];
|
||||
|
||||
string sql_checking = $"select employee_id,date,time from tad_time_attendances where employee_id={employee_id} and date='{date}' and time='{time}' ";
|
||||
|
||||
|
||||
DataTable dt = db.ExecuteDataTableNpgsql(sql_checking, null);
|
||||
if (dt.Rows.Count == 0)
|
||||
{
|
||||
string sql_insert = $"insert into tad_time_attendances(employee_id,date,time) values({employee_id},'{date}','{time}')";
|
||||
db.ExecuteNonQueryNpgsql(sql_insert, null);
|
||||
count_insert++;
|
||||
}
|
||||
}
|
||||
|
||||
return count_insert.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public class userinfo
|
||||
{
|
||||
public string badgenumber { get; set; }
|
||||
public string userid { get; set; }
|
||||
public string name { get; set; }
|
||||
public string lastname { get; set; }
|
||||
}
|
||||
|
||||
public class checkinout
|
||||
{
|
||||
public DateTime checktime { get; set; }
|
||||
public string userid { get; set; }
|
||||
}
|
||||
|
||||
public class fingerscanDataModel
|
||||
{
|
||||
public string badgenumber { get; set; }
|
||||
|
||||
public DateTime checktime { get; set; }
|
||||
|
||||
public string fullname { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//using (var command = odbcConnection.CreateCommand())
|
||||
// {
|
||||
// command.CommandType = System.Data.CommandType.Text;
|
||||
// string checktime = GetDateStringForDB(model.checktime.Value);
|
||||
// command.CommandText = $@"
|
||||
//SELECT USERINFO.[name], USERINFO.[lastname], USERINFO.Badgenumber, CHECKINOUT.CHECKTIME
|
||||
//FROM CHECKINOUT INNER JOIN USERINFO ON CHECKINOUT.USERID = USERINFO.USERID
|
||||
//where CHECKTIME is not null
|
||||
//and DateValue(CHECKINOUT.CHECKTIME) = #{checktime}#
|
||||
//order by CHECKTIME desc; ";
|
||||
// OdbcDataReader reader = command.ExecuteReader();
|
||||
|
||||
// while (reader.Read())
|
||||
// {
|
||||
// var n = new eva_temp_fingerscanViewModel();
|
||||
// //n.id = Convert.ToDateTime(reader["CHECKTIME"]);
|
||||
// if(reader["checktime"] != DBNull.Value)
|
||||
// {
|
||||
// n.badgenumber = Convert.ToString(reader["Badgenumber"]);
|
||||
// n.checktime = Convert.ToDateTime(reader["CHECKTIME"]);
|
||||
// n.txt_checktime = GetDateStringForDB(n.checktime.Value) + " " + GetTimeStringForDB(n.checktime.Value);
|
||||
// n.fullname_in_finger_scan = Convert.ToString(reader["name"]) + " " + Convert.ToString(reader["lastname"]);
|
||||
|
||||
// var x = (from i in all_emp
|
||||
// where i.position_number == n.badgenumber
|
||||
// select i).FirstOrDefault();
|
||||
// if (x != null)
|
||||
// {
|
||||
// n.id = x.id.ToString()+"#"+ GetDateStringForDB(n.checktime.Value)+"#"+ GetTimeStringForDB(n.checktime.Value);
|
||||
// n.fullname_in_system = x.fullname;
|
||||
// };
|
||||
// data.Add(n);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
42
Models/eva_temp_fingerscan/eva_temp_fingerscanViewModel.cs
Normal file
42
Models/eva_temp_fingerscan/eva_temp_fingerscanViewModel.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using TTSW.EF;
|
||||
using TTSW.Utils;
|
||||
using TTSW.Constant;
|
||||
using TTSW.Common;
|
||||
|
||||
namespace TodoAPI2.Models
|
||||
{
|
||||
public class eva_temp_fingerscanViewModel : BaseViewModel2<string>
|
||||
{
|
||||
|
||||
public string badgenumber { get; set; }
|
||||
|
||||
public DateTime? checktime { get; set; }
|
||||
|
||||
public string txt_checktime { get; set; }
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// if (this.checktime.HasValue)
|
||||
// {
|
||||
// return MyHelper.GetDateStringForReport(this.checktime) + " " + this.checktime.Value.ToShortTimeString();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// return "";
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
public string fullname_in_system { get; set; }
|
||||
|
||||
public string fullname_in_finger_scan { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace TodoAPI2.Models
|
||||
{
|
||||
public class eva_temp_fingerscanWithSelectionViewModel: eva_temp_fingerscanViewModel
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user