เพิ่มส่วนการแจ้งเตือนผ่าน notification
This commit is contained in:
@@ -14,6 +14,11 @@ using System.Net;
|
|||||||
using TTSW.Configure;
|
using TTSW.Configure;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
|
using Npgsql;
|
||||||
|
using NpgsqlTypes;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
namespace TodoAPI2.Models
|
namespace TodoAPI2.Models
|
||||||
{
|
{
|
||||||
@@ -22,12 +27,17 @@ namespace TodoAPI2.Models
|
|||||||
private IBaseRepository2<eva_create_evaluation_detailEntity, int> _repository;
|
private IBaseRepository2<eva_create_evaluation_detailEntity, int> _repository;
|
||||||
private IMyDatabase db;
|
private IMyDatabase db;
|
||||||
private Iexternal_linkageService ext;
|
private Iexternal_linkageService ext;
|
||||||
|
private Iexternal_employeeService emp;
|
||||||
|
private IConfiguration Configuration { get; set; }
|
||||||
|
|
||||||
public eva_create_evaluation_detail_statusService(IBaseRepository2<eva_create_evaluation_detailEntity, int> repository, IMyDatabase mydb, Iexternal_linkageService inext)
|
public eva_create_evaluation_detail_statusService(IBaseRepository2<eva_create_evaluation_detailEntity, int> repository,
|
||||||
|
IMyDatabase mydb, Iexternal_linkageService inext, Iexternal_employeeService inemp, IConfiguration configuration)
|
||||||
{
|
{
|
||||||
_repository = repository;
|
_repository = repository;
|
||||||
db = mydb;
|
db = mydb;
|
||||||
ext = inext;
|
ext = inext;
|
||||||
|
emp = inemp;
|
||||||
|
Configuration = configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Private Functions
|
#region Private Functions
|
||||||
@@ -160,8 +170,6 @@ namespace TodoAPI2.Models
|
|||||||
where k.id == existingEntity.create_evaluation_id
|
where k.id == existingEntity.create_evaluation_id
|
||||||
select k).FirstOrDefault();
|
select k).FirstOrDefault();
|
||||||
|
|
||||||
// Do notification here
|
|
||||||
|
|
||||||
if (existingEntity != null)
|
if (existingEntity != null)
|
||||||
{
|
{
|
||||||
existingEntity.create_evaluation_id = model.create_evaluation_id;
|
existingEntity.create_evaluation_id = model.create_evaluation_id;
|
||||||
@@ -176,36 +184,63 @@ namespace TodoAPI2.Models
|
|||||||
if (existingEntity.status_chief == "Y") existingEntity.status_supervisor = existingEntity.status_chief;
|
if (existingEntity.status_chief == "Y") existingEntity.status_supervisor = existingEntity.status_chief;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int? noti_to_employee_id = null;
|
||||||
|
int? owner_eva_employee_id = existingEntity.employee_id;
|
||||||
|
string noti_message = "กรุณาตรวจสอบแบบประเมินของ {0}";
|
||||||
|
string noti_url = "/eva/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d2?id=" + existingEntity.id.ToString();
|
||||||
|
|
||||||
if (model.status_mode == "next0")
|
if (model.status_mode == "next0")
|
||||||
{
|
{
|
||||||
existingEntity.status_self_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
existingEntity.status_self_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
||||||
|
noti_to_employee_id = existingEntity.chief;
|
||||||
|
noti_message = "กรุณาตรวจสอบแบบประเมินของ {0}";
|
||||||
|
noti_url = "/eva/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process_d?id=" + existingEntity.id.ToString();
|
||||||
}
|
}
|
||||||
else if (model.status_mode == "next1")
|
else if (model.status_mode == "next1")
|
||||||
{
|
{
|
||||||
existingEntity.status_chief_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
existingEntity.status_chief_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
||||||
|
if (current_eva.employee_id == existingEntity.chief) // หัวหน้าและผู้ประเมินสูงสุด เป็นคนคนเดียวกัน
|
||||||
|
{
|
||||||
|
noti_to_employee_id = current_eva.supervisor1_id;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
noti_to_employee_id = current_eva.employee_id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (model.status_mode == "back1")
|
else if (model.status_mode == "back1")
|
||||||
{
|
{
|
||||||
existingEntity.status_chief_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
existingEntity.status_chief_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
||||||
existingEntity.status_self_click_date = null;
|
existingEntity.status_self_click_date = null;
|
||||||
|
noti_to_employee_id = existingEntity.employee_id;
|
||||||
|
noti_message = "ข้อตกลงการประเมินของคุณ ({0}) ถูกตีกลับ";
|
||||||
|
noti_url = "/eva/eva_create_evaluation_detail_agreementView/eva_create_evaluation_detail_agreement_d?id=" + existingEntity.id.ToString();
|
||||||
}
|
}
|
||||||
else if (model.status_mode == "next2")
|
else if (model.status_mode == "next2")
|
||||||
{
|
{
|
||||||
existingEntity.status_supervisor_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
existingEntity.status_supervisor_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
||||||
|
noti_to_employee_id = current_eva.supervisor1_id;
|
||||||
}
|
}
|
||||||
else if (model.status_mode == "back2")
|
else if (model.status_mode == "back2")
|
||||||
{
|
{
|
||||||
existingEntity.status_supervisor_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
existingEntity.status_supervisor_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
||||||
existingEntity.status_chief_click_date = null;
|
existingEntity.status_chief_click_date = null;
|
||||||
|
noti_to_employee_id = existingEntity.chief;
|
||||||
|
noti_message = "แบบประเมินของ {0} ถูกตีกลับ";
|
||||||
|
noti_url = "/eva/eva_create_evaluation_detail_agreementView/eva_create_evaluation_detail_agreement_d?id=" + existingEntity.id.ToString();
|
||||||
}
|
}
|
||||||
else if (model.status_mode == "next3")
|
else if (model.status_mode == "next3")
|
||||||
{
|
{
|
||||||
existingEntity.status_supervisor1A_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
existingEntity.status_supervisor1A_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
||||||
|
noti_to_employee_id = current_eva.supervisor2_id;
|
||||||
}
|
}
|
||||||
else if (model.status_mode == "back3")
|
else if (model.status_mode == "back3")
|
||||||
{
|
{
|
||||||
existingEntity.status_supervisor1A_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
existingEntity.status_supervisor1A_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
||||||
existingEntity.status_supervisor_click_date = null;
|
existingEntity.status_supervisor_click_date = null;
|
||||||
|
noti_to_employee_id = current_eva.employee_id;
|
||||||
|
noti_message = "แบบประเมินของ {0} ถูกตีกลับ";
|
||||||
|
noti_url = "/eva/eva_create_evaluation_detail_agreementView/eva_create_evaluation_detail_agreement_d2?id=" + existingEntity.id.ToString();
|
||||||
}
|
}
|
||||||
else if (model.status_mode == "next4")
|
else if (model.status_mode == "next4")
|
||||||
{
|
{
|
||||||
@@ -215,8 +250,13 @@ namespace TodoAPI2.Models
|
|||||||
{
|
{
|
||||||
existingEntity.status_supervisor2A_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
existingEntity.status_supervisor2A_click_date = MyHelper.RemoveTimeFromDate(DateTime.Now);
|
||||||
existingEntity.status_supervisor1A_click_date = null;
|
existingEntity.status_supervisor1A_click_date = null;
|
||||||
|
noti_to_employee_id = current_eva.supervisor1_id;
|
||||||
|
noti_message = "แบบประเมินของ {0} ถูกตีกลับ";
|
||||||
|
noti_url = "/eva/eva_create_evaluation_detail_agreementView/eva_create_evaluation_detail_agreement_d2?id=" + existingEntity.id.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SendNotification(noti_to_employee_id, owner_eva_employee_id, existingEntity.id, noti_message, noti_url);
|
||||||
|
|
||||||
var updated = _repository.Update(id, existingEntity);
|
var updated = _repository.Update(id, existingEntity);
|
||||||
return Get(updated.id);
|
return Get(updated.id);
|
||||||
}
|
}
|
||||||
@@ -224,6 +264,38 @@ namespace TodoAPI2.Models
|
|||||||
throw new NotificationException("No data to update");
|
throw new NotificationException("No data to update");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SendNotification(int? noti_to_employee_id, int? owner_eva_employee_id, int? detail_id, string noti_message, string noti_url)
|
||||||
|
{
|
||||||
|
if (!noti_to_employee_id.HasValue || !owner_eva_employee_id.HasValue || !detail_id.HasValue) return;
|
||||||
|
|
||||||
|
var all_emp = emp.GetAllEmployee();
|
||||||
|
int? noti_to_user_id = (from i in all_emp
|
||||||
|
where i.id == noti_to_employee_id
|
||||||
|
select i.user_id).FirstOrDefault();
|
||||||
|
var owner_info = (from i in all_emp
|
||||||
|
where i.id == owner_eva_employee_id
|
||||||
|
select i).FirstOrDefault();
|
||||||
|
string sql = $@"
|
||||||
|
insert into notifications(id,type,notifiable_type,notifiable_id,data)
|
||||||
|
values('{Guid.NewGuid().ToString()}','App\Notifications\WorkflowNotification','App\Models\User',{noti_to_user_id.ToString()},@data)
|
||||||
|
";
|
||||||
|
DataOfNotification d = new DataOfNotification();
|
||||||
|
d.title = noti_message.Replace("{0}", owner_info.fullname);
|
||||||
|
d.body = noti_message.Replace("{0}", owner_info.fullname);
|
||||||
|
d.url = noti_url;
|
||||||
|
|
||||||
|
NpgsqlParameter data = new NpgsqlParameter();
|
||||||
|
data.DbType = DbType.String;
|
||||||
|
data.Direction = ParameterDirection.Input;
|
||||||
|
data.ParameterName = "data";
|
||||||
|
data.Value = JsonConvert.SerializeObject(d);
|
||||||
|
|
||||||
|
List<NpgsqlParameter> para = new List<NpgsqlParameter>();
|
||||||
|
para.Add(data);
|
||||||
|
|
||||||
|
db.ExecuteNonQueryNpgsql(sql, para);
|
||||||
|
}
|
||||||
|
|
||||||
public string UpdateMultiple(List<eva_create_evaluation_detail_statusInputModel> model)
|
public string UpdateMultiple(List<eva_create_evaluation_detail_statusInputModel> model)
|
||||||
{
|
{
|
||||||
foreach (var i in model)
|
foreach (var i in model)
|
||||||
@@ -240,7 +312,6 @@ namespace TodoAPI2.Models
|
|||||||
existingEntity.status_supervisor1A = i.status_supervisor1A;
|
existingEntity.status_supervisor1A = i.status_supervisor1A;
|
||||||
existingEntity.status_supervisor2A = i.status_supervisor2A;
|
existingEntity.status_supervisor2A = i.status_supervisor2A;
|
||||||
|
|
||||||
|
|
||||||
_repository.UpdateWithoutCommit(i.id.Value, existingEntity);
|
_repository.UpdateWithoutCommit(i.id.Value, existingEntity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -290,4 +361,11 @@ namespace TodoAPI2.Models
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class DataOfNotification
|
||||||
|
{
|
||||||
|
public string title { get; set; }
|
||||||
|
public string body { get; set; }
|
||||||
|
public string url { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user