EchoTex_Payroll/HRM.UI/Controllers/MobileAPI/Components/ExtentionMethods.cs

915 lines
43 KiB
C#
Raw Normal View History

2024-10-14 10:01:49 +06:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using HRM.BO;
using HRM.DA;
using HRM.UI.MODELS;
using Ease.Core.Model;
using System.Data;
using Novacode.NETCorePort;
using static iTextSharp.text.pdf.AcroFields;
namespace HRM.UI.Components
{
public static class ExtentionMethods
{
#region Employee Assembler
public static UserTModel ConvertToTModel(this Employee oEmp)
{
UserTModel obj = new UserTModel();
obj = new UserTModel();
obj.PKID = oEmp.ID;
obj.Name = oEmp.Name;
if (oEmp.Designation != null)
{
obj.Designation = oEmp.Designation.Name;
}
return obj;
}
public static EmployeeTModel ConvertToTModel(this Employee oEmp, List<Grade> ogrades, List<Department> odepartments)
{
EmployeeTModel obj = new EmployeeTModel();
obj.EmployeeID = oEmp.ID;
obj.Name = oEmp.Name;
obj.EmployeeNO = oEmp.EmployeeNo;
Grade og = ogrades.FirstOrDefault(i => i.ID == oEmp.GradeID);
if (og != null)
obj.Grade = og.Name;
Department od = odepartments.FirstOrDefault(i => i.ID == oEmp.DepartmentID);
if (od != null)
obj.Grade = od.Name;
return obj;
}
public static List<EmployeeTModel> ConvertToTModels(this IEnumerable<Employee> oEmploye)
{
List<EmployeeTModel> objs = new List<EmployeeTModel>();
List<Grade> ogrades = new GradeService().GetAllPayrollTypes(EnumStatus.Active);
List<Department> odepartments = new DepartmentService().GetAll(1); // payrolltype
foreach (Employee item in oEmploye)
{
objs.Add(item.ConvertToTModel(ogrades, odepartments));
}
return objs;
}
#endregion
#region Leave Assembler
public static LeaveTModel ConvertToTModel(this Leave oLeave)
{
LeaveTModel obj = new LeaveTModel();
obj.PKID = oLeave.ID;
obj.Code = oLeave.Code;
obj.Description = oLeave.Description;
obj.IsHalfDayLeave = oLeave.IsHalfDayLeave;
obj.DependsOnHoliday = oLeave.DependsOnHoliday;
obj.IsAttachmentNeeded = oLeave.IsAttachmentNeeded;
obj.AttachmentMaxDays = oLeave.AttachmentMaxDays;
obj.IsLFA = oLeave.IsLFA;
return obj;
}
public static List<LeaveTModel> ConvertToTModels(this IEnumerable<Leave> oLeaves)
{
List<LeaveTModel> objs = new List<LeaveTModel>();
foreach (Leave item in oLeaves)
{
objs.Add(item.ConvertToTModel());
}
return objs;
}
#endregion
#region EmpLeaveStatus Assembler
public static EmpLeaveStatusTModel ConvertToTModel(this EmpLeaveStatus oEmpLevStatus)
{
EmpLeaveStatusTModel obj = new EmpLeaveStatusTModel();
obj = new EmpLeaveStatusTModel();
obj.LeaveID = oEmpLevStatus.LeaveId;
obj.LeaveName = oEmpLevStatus.Leave != null ? oEmpLevStatus.Leave.Description : new LeaveService().Get(oEmpLevStatus.LeaveId).Description;
if (oEmpLevStatus.Leave != null)
{
obj.LeaveName = oEmpLevStatus.Leave.Description;
}
obj.Opening = oEmpLevStatus.OpeningBalance;
obj.Availed = oEmpLevStatus.LeaveAvailed;
obj.LateAttnAdjust = oEmpLevStatus.LateLeaveAdjustmentConsumed;
obj.Balance = oEmpLevStatus.ClosingBalance - oEmpLevStatus.LateLeaveAdjustmentConsumed;
return obj;
}
public static List<EmpLeaveStatusTModel> ConvertToTModels(this IEnumerable<EmpLeaveStatus> oLeaves)
{
List<EmpLeaveStatusTModel> objs = new List<EmpLeaveStatusTModel>();
foreach (EmpLeaveStatus item in oLeaves)
{
objs.Add(item.ConvertToTModel());
}
return objs;
}
public static GradeTModel ConvertToTModel(this Grade grade)
{
GradeTModel obj = new GradeTModel();
obj.ID = grade.ID;
obj.Name = grade.Name;
return obj;
}
public static List<GradeTModel> ConvertToTModels(this IEnumerable<Grade> Grade)
{
List<GradeTModel> objs = new List<GradeTModel>();
foreach (Grade item in Grade)
{
objs.Add(item.ConvertToTModel());
}
return objs;
}
#endregion
#region WF Objects Assemblers
//private static PendingJobTModel ConvertIWFTModel(this WFMovementTran oJob, List<WFSetup> oWFSetups, List<WFType> oWFTypes)
//{
// PendingJobTModel obj = new PendingJobTModel();
// obj.PKID = oJob.ID;
// obj.ObjectID = oJob.ObjectID;
// obj.Description = oJob.ObjectDescription;
// obj.OperationDate = oJob.Senttime;
// var oWFSetup = oWFSetups.FirstOrDefault(x => x.ID == oJob.SetupID);
// if (oWFSetup != null)
// {
// var oWFType = oWFTypes.FirstOrDefault(x => x.ID == oWFSetup.WFTypeId);
// if (oWFType != null)
// {
// obj.Module = oWFType.StatusUpdateTable;
// }
// }
// return obj;
//}
public static PendingJobTModel ConvertPendingJobWithDetailTModel(this WFMovementTran oJob, int oEmpID, LeaveEntry le)
{
PendingJobTModel obj = new PendingJobTModel();
WFType oWFType = new WFTypeService().Get(oJob.WFTypeID);
obj.PKID = oJob.ID;
obj.UserID = oEmpID;
obj.ObjectID = oJob.ObjectID;
obj.Description = oJob.ObjectDescription.Trim().Trim('.', ',');
obj.OperationDate = oJob.Senttime;
obj.Remarks = le.Remarks;
obj.Module = oWFType.StatusUpdateTable;
if (new WFMovementTranService().IsInitiator(oJob.UniqueNumber, oEmpID))
{
obj.HasAccept = true;
obj.HasReject = obj.HasRevert = obj.HasRedirect = false;
obj.AcceptButtonText = "Submit";
}
IworkflowInterface initiatingObject = null;
switch (obj.Module)
{
case "LeaveEntry":
initiatingObject = new LeaveEntryService().Get(obj.ObjectID);
break;
//case "HRRequest":
// initiatingObject = HRRequest.Get(obj.ObjectID);
// break;
default:
break;
}
if (initiatingObject != null)
{
DataTable dt = new LeaveEntryService().GetPendingJobDetail(le.ID);
List<PendingJobDetail> opJobsDetail = new List<PendingJobDetail>();
if (dt.Rows.Count > 0)
{
opJobsDetail.Add(new PendingJobDetail() { Type = "Applier:", Value = dt.Rows[0]["Applier"].ToString() });
opJobsDetail.Add(new PendingJobDetail() { Type = "Leave Type:", Value = dt.Rows[0]["Leave"].ToString() });
opJobsDetail.Add(new PendingJobDetail() { Type = "From Date:", Value = dt.Rows[0]["FromDate"].ToString() });
opJobsDetail.Add(new PendingJobDetail() { Type = "To Date:", Value = dt.Rows[0]["ToDate"].ToString() });
opJobsDetail.Add(new PendingJobDetail() { Type = "Total Days:", Value = dt.Rows[0]["TotalDays"].ToString() });
opJobsDetail.Add(new PendingJobDetail() { Type = "Remarks:", Value = dt.Rows[0]["Remarks"].ToString() });
}
var details = opJobsDetail;
obj.Items = details.ConvertPendingJobDetailTModels();
}
return obj;
}
private static PendingJobDetailTModel ConvertPendingJobDetailTModel(this PendingJobDetail oJob)
{
PendingJobDetailTModel obj = new PendingJobDetailTModel();
obj.Type = oJob.Type;
obj.Value = oJob.Value;
return obj;
}
private static List<PendingJobDetailTModel> ConvertPendingJobDetailTModels(this IEnumerable<PendingJobDetail> oJobs)
{
List<PendingJobDetailTModel> objs = new List<PendingJobDetailTModel>();
if (oJobs != null)
{
foreach (PendingJobDetail item in oJobs)
{
objs.Add(item.ConvertPendingJobDetailTModel());
}
}
return objs;
}
private static PendingJobTModel ConvertPendingJobTModel(this WFMovementTran oJob)
{
PendingJobTModel obj = new PendingJobTModel();
obj.PKID = oJob.ID;
obj.ObjectID = oJob.ObjectID;
obj.Description = oJob.ObjectDescription.Trim().Trim('.', ',');
obj.OperationDate = oJob.Senttime;
obj.Remarks = oJob.Remarks;
return obj;
}
private static List<PendingJobTModel> ConvertPendingJobTModel(this DataTable dataTable)
{
List<PendingJobTModel> lsitItems = new List<PendingJobTModel>();
if (dataTable.Rows.Count > 0)
{
foreach (DataRow row in dataTable.Rows)
{
PendingJobTModel obj = new PendingJobTModel();
obj.PKID = Convert.ToInt32(row["WFMovementTranID"]);
obj.ObjectID = Convert.ToInt32(row["ObjectID"]);
obj.Description = Convert.ToString(row["ObjectDescription"]).Trim().Trim('.', ',');
obj.OperationDate = Convert.ToDateTime(row["Senttime"]);
obj.Module = Convert.ToString(row["ModuleName"]);
obj.Remarks = Convert.ToString(row["Remarks"]);
obj.PendingJobsCount = Convert.ToInt32(row["Jobcount"]);
if (obj.PendingJobsCount > 0 && obj.Module.ToLower() == "attendance")
{
obj.Description = string.Format("{0} pending Attendance Regularization", obj.PendingJobsCount);
}
lsitItems.Add(obj);
}
}
return lsitItems;
}
private static NotificationTModel ConvertNotificationTModel(this WFMovementTask oNotifiaction)
{
NotificationTModel obj = new NotificationTModel();
obj.PKID = oNotifiaction.ID;
obj.ObjectID = oNotifiaction.WFMovementTranID;
obj.Description = oNotifiaction.Description;
obj.OperationDate = oNotifiaction.SentTime;
return obj;
}
public static List<PendingJobTModel> ConvertPendingJobTModels(this IEnumerable<WFMovementTran> oJobs)
{
List<PendingJobTModel> objs = new List<PendingJobTModel>();
foreach (WFMovementTran item in oJobs)
{
objs.Add(item.ConvertPendingJobTModel());
}
return objs;
}
public static List<PendingJobTModel> ConvertPendingJobTModels(this DataTable oJobs)
{
List<PendingJobTModel> objs = new List<PendingJobTModel>();
objs = oJobs.ConvertPendingJobTModel();
return objs;
}
public static List<NotificationTModel> ConvertToNotificationTModels(this IEnumerable<WFMovementTask> oNotifications)
{
List<NotificationTModel> objs = new List<NotificationTModel>();
foreach (WFMovementTask item in oNotifications)
{
objs.Add(item.ConvertNotificationTModel());
}
return objs;
}
#endregion
#region DailyAttnProcess Functions
private static DailyAttnProcessTModelForLM ConvertToDailyAttnProcessTModelForLM(this DailyAttnProcess oDailyAttnProcess, Shift oShift, Employee oEmp)
{
DailyAttnProcessTModelForLM obj = new DailyAttnProcessTModelForLM();
obj.PKID = oDailyAttnProcess.ID;
obj.EmployeeID = oDailyAttnProcess.EmployeeID;
obj.EmployeeNo = oEmp.EmployeeNo;
obj.EmployeeName = oEmp.Name;
obj.AttnDate = oDailyAttnProcess.AttnDate;
obj.InTime = oDailyAttnProcess.InTime;
obj.OutTime = oDailyAttnProcess.OutTime;
obj.ActualInTime = oDailyAttnProcess.ActualInTime;
obj.ActualOutTime = oDailyAttnProcess.ActualOutTime;
obj.ActualOT = oDailyAttnProcess.OTHour;
obj.AttenType = oDailyAttnProcess.AttenType;
obj.WFStatus = oDailyAttnProcess.WFStatus;
obj.Comments = oDailyAttnProcess.Comments;
obj.Comments = oDailyAttnProcess.EmpRemarks;
obj.Name = oShift != null ? oShift.Name : "";
obj.ShiftShortName = oShift != null ? oShift.ShortName : "";
return obj;
}
private static DailyAttnProcessTModelForLM ConvertToDailyAttnProcessTModelForLM(DataRow orow)
{
DailyAttnProcessTModelForLM obj = new DailyAttnProcessTModelForLM();
//dap.*, e.EmployeeID, EmployeeNo, e.Name, e.categoryID, e.GradeID,
// LocationID, d.name as DesignationName, g.DESCRIPTION GradeName, dept.DESCRIPTION DepartmentName
obj.ID = Convert.ToInt32(orow["DailyAttnProcessID"]);
obj.PKID = obj.ID;
obj.EmployeeID = Convert.ToInt32(orow["EmployeeID"]);
obj.EmployeeNo = Convert.ToString(orow["EmployeeNo"]);
obj.EmployeeName = Convert.ToString(orow["Name"]);
obj.AttnDate = Convert.ToDateTime(orow["AttnDate"]);
obj.InTime = (orow["InTime"] != DBNull.Value && orow["InTime"] != null) ? Convert.ToDateTime(orow["InTime"]) : null;
obj.OutTime = (orow["OutTime"] != DBNull.Value && orow["OutTime"] != null) ? Convert.ToDateTime(orow["OutTime"]) : null;
obj.ActualInTime = (orow["ActualInTime"] != DBNull.Value && orow["ActualInTime"] != null) ? Convert.ToDateTime(orow["ActualInTime"]) : null;
obj.ActualOutTime = (orow["ActualOutTime"] != DBNull.Value && orow["ActualOutTime"] != null) ? Convert.ToDateTime(orow["ActualOutTime"]) : null;
//var ActualInTimeParam = orow["ActualInTime"];
//if (!(ActualInTimeParam is DBNull))
//{
// obj.ActualInTime = Convert.ToDateTime(orow["ActualInTime"]);
//}
//var ActualOutTime = orow["ActualInTime"];
//if (!(ActualOutTime is DBNull))
//{
// obj.ActualOutTime = Convert.ToDateTime(orow["ActualOutTime"]);
//}
// obj.ActualOT = oDailyAttnProcess.OTHour;
obj.AttenType = (EnumAttendanceType)Convert.ToInt32(orow["AttenType"]);
obj.WFStatus = (EnumWFAttnStatus)Convert.ToInt32(orow["WFStatus"]);
obj.EmpRemarks = Convert.ToString(orow["EmpRemarks"]);
obj.Comments = Convert.ToString(orow["Comments"]);
obj.ShiftShortName = orow["ShortName"] != null ? orow["ShortName"].ToString() : "";
obj.ShiftID = orow["ShiftID"] != DBNull.Value && orow["ShiftID"] != null ? Convert.ToInt32(orow["ShiftID"]) : null;
return obj;
}
public static List<DailyAttnProcessTModelForLM> ConvertToDailyAttnProcessTModelsForLM(this IEnumerable<DailyAttnProcess> oDailyAttnProcess)
{
List<DailyAttnProcessTModelForLM> objs = new List<DailyAttnProcessTModelForLM>();
List<Shift> oShifts = new ShiftService().GetAllShift();
List<Employee> employees = new EmployeeService().GetAllEmps();
foreach (DailyAttnProcess item in oDailyAttnProcess)
{
Employee oEmp = employees.Where(x => x.ID == item.EmployeeID).FirstOrDefault();
Shift oShift = new Shift();
if (item.ShiftID != null)
oShift = oShifts.FirstOrDefault(x => x.ID == item.ShiftID);
else
oShift = null;
objs.Add(item.ConvertToDailyAttnProcessTModelForLM(oShift, oEmp));
}
return objs;
}
public static List<DailyAttnProcessTModelForLM> ConvertToDailyAttnProcessTModelsForLM(DataTable lmData)
{
List<DailyAttnProcessTModelForLM> objs = new List<DailyAttnProcessTModelForLM>();
foreach (DataRow item in lmData.Rows)
{
objs.Add(ExtentionMethods.ConvertToDailyAttnProcessTModelForLM(item));
}
return objs;
}
public static void CheckValidity(DailyAttnProcess oDailyAttnProcess, DailyAttnProcessTModel oDailyAttnProcessTModel)
{
if (oDailyAttnProcess == null)
{
throw new CustomException(EnumExceptionType.Error, "Submitted Attendance data not found.");
}
if (string.IsNullOrWhiteSpace(oDailyAttnProcessTModel.Comments) && oDailyAttnProcessTModel.WFStatus == EnumWFAttnStatus.EmpSubmitted)
{
throw new CustomException(EnumExceptionType.Validation, "Remarks Cannot Be Empty");
}
}
public static DailyAttnProcess GetUpdatedNotSubmittedAttnData(this DailyAttnProcessTModel oDailyAttnProcessTModel)
{
DailyAttnProcess oDailyAttnProcess = new DailyAttnProcessService().Get(oDailyAttnProcessTModel.PKID);
CheckValidity(oDailyAttnProcess, oDailyAttnProcessTModel);
switch (oDailyAttnProcessTModel.WFStatus)
{
case EnumWFAttnStatus.None:
break;
case EnumWFAttnStatus.EmpSubmitted:
oDailyAttnProcess.WFStatus = EnumWFAttnStatus.EmpSubmitted;
oDailyAttnProcess.AttenType = oDailyAttnProcessTModel.AttenType;
if (oDailyAttnProcessTModel.AppliedOT > 0)
{
oDailyAttnProcess.ApprovedOTHour = oDailyAttnProcessTModel.AppliedOT;
oDailyAttnProcess.OtRemarks = oDailyAttnProcessTModel.AppliedOT.ToString();
}
oDailyAttnProcess.Comments = oDailyAttnProcessTModel.Comments;
oDailyAttnProcess.InTime = oDailyAttnProcessTModel.InTime;
oDailyAttnProcess.OutTime = oDailyAttnProcessTModel.OutTime;
oDailyAttnProcess.IsManualEntry = true;
break;
case EnumWFAttnStatus.LMApproved:
break;
case EnumWFAttnStatus.DHApproved:
break;
case EnumWFAttnStatus.HRApproved:
break;
case EnumWFAttnStatus.NotApplicable:
oDailyAttnProcess.WFStatus = EnumWFAttnStatus.NotApplicable;
break;
default:
break;
}
return oDailyAttnProcess;
}
public static DailyAttnProcessTModel ConvertToDailyAttnProcessTModel(this DailyAttnProcess oDailyAttnProcess, Shift oShift)
{
DailyAttnProcessTModel obj = new DailyAttnProcessTModel();
obj.ID = oDailyAttnProcess.ID;
obj.PKID = oDailyAttnProcess.ID;
obj.DailyAttnProcessID = oDailyAttnProcess.ID;
obj.EmployeeID = oDailyAttnProcess.EmployeeID;
obj.AttnDate = oDailyAttnProcess.AttnDate;
obj.InTime = oDailyAttnProcess.InTime;
obj.OutTime = oDailyAttnProcess.OutTime;
obj.ActualOT = oDailyAttnProcess.OTHour;
obj.AttenType = oDailyAttnProcess.AttenType;
obj.EmpAttenType = oDailyAttnProcess.AttenType;
obj.WFStatus = oDailyAttnProcess.WFStatus;
obj.Comments = oDailyAttnProcess.Comments;
obj.ShiftShortName = oShift != null ? oShift.ShortName : "";
return obj;
}
//public static DailyAttnProcessTModel ConvertToDailyAttnProcessTModelRequest(this DailyAttnProcess oDailyAttnProcess, Shift oShift)
//{
// DailyAttnProcessTModel obj = new DailyAttnProcessTModel();
// Employee employee = new EmployeeService().Get(oDailyAttnProcess.EmployeeID);
// obj.ID = oDailyAttnProcess.ID;
// obj.Location = new AttendanceLocationTModel();
// obj.ID = oDailyAttnProcess.ID;
// obj.PKID = oDailyAttnProcess.ID;
// obj.EmployeeNo = employee.EmployeeNo;
// obj.EmployeeName = employee.Name;
// obj.ShiftID = oDailyAttnProcess.ShiftID;
// obj.DailyAttnProcessID = oDailyAttnProcess.ID;
// obj.EmployeeID = oDailyAttnProcess.EmployeeID;
// obj.AttnDate = oDailyAttnProcess.AttnDate;
// obj.InTime = oDailyAttnProcess.InTime;
// obj.OutTime = oDailyAttnProcess.OutTime;
// obj.ActualInTime = oDailyAttnProcess.ActualInTime;
// obj.ActualOutTime = oDailyAttnProcess.ActualOutTime;
// obj.ActualStatus = oDailyAttnProcess.AttenType;
// obj.ActualOT = oDailyAttnProcess.OTHour;
// obj.AttenType = oDailyAttnProcess.AttenType;
// obj.EmpAttenType = oDailyAttnProcess.AttenType;
// obj.WFStatus = oDailyAttnProcess.WFStatus;
// obj.Comments = oDailyAttnProcess.Comments;
// obj.LMComments = oDailyAttnProcess.LMRemarks;
// obj.ShiftShortName = oShift != null ? oShift.ShortName : "";
// obj.Location.ZipcodeInTime = oDailyAttnProcess.ZipcodeInTime;
// obj.Location.ZipcodeOutTime = oDailyAttnProcess.ZipcodeOutTime;
// obj.Location.InTimeLatitude = oDailyAttnProcess.InTimeLatitude;
// obj.Location.OutTimeLatitude = oDailyAttnProcess.OutTimeLatitude;
// obj.Location.InTimeLongitude = oDailyAttnProcess.InTimeLongitude;
// obj.Location.OutTimeLongitude = oDailyAttnProcess.OutTimeLongitude;
// obj.Location.InTimeNearestAddress = oDailyAttnProcess.InTimeNearestAddress;
// obj.Location.OutTimeNearestAddress = oDailyAttnProcess.OutTimeNearestAddress;
// obj.LocationID = oDailyAttnProcess.LocationID;
// obj.IsFromMobile = oDailyAttnProcess.IsFromMobile;
// obj.MobileTeamAttnDescriptionString = string.Format("[{0}] {1}\r\n{2} | In: {3} | Out: {4} | {5}", obj.EmployeeNo, obj.EmployeeName, obj.AttnDate.ToString("dd MMM"), obj.InTime != null ? ((DateTime)obj.InTime).ToString("HH:mm") : "", obj.OutTime != null ? ((DateTime)obj.OutTime).ToString("HH:mm") : " ", obj.AttenType.ToString());
// if (oDailyAttnProcess.InTimeNearestAddress == "" && oDailyAttnProcess.OutTimeNearestAddress != "")
// {
// //obj.MobileTeamAttnDescriptionString = string.Format("[{0}] {1}\r\nDate: {2} || Out: {3} || {4}", obj.EmployeeNo, obj.EmployeeName, obj.AttnDate.ToString("dd MMM"), obj.OutTime != null ? ((DateTime)obj.OutTime).ToString("HH:mm") : " ", obj.AttenType.ToString());
// obj.Location.OutTimeNearestAddress = oDailyAttnProcess.OutTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.OutTimeNearestAddress.Length, 42));
// }
// else if (oDailyAttnProcess.OutTimeNearestAddress == "" && oDailyAttnProcess.InTimeNearestAddress != "")
// {
// //obj.MobileTeamAttnDescriptionString = string.Format("[{0}] {1}\r\nDate: {2} || In: {3} || {4}", obj.EmployeeNo, obj.EmployeeName, obj.AttnDate.ToString("dd MMM"), obj.InTime != null ? ((DateTime)obj.InTime).ToString("HH:mm") : "", obj.AttenType.ToString());
// obj.Location.InTimeNearestAddress = oDailyAttnProcess.InTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.InTimeNearestAddress.Length, 42));
// }
// else if (oDailyAttnProcess.InTimeNearestAddress != "" && oDailyAttnProcess.OutTimeNearestAddress != "")
// {
// //obj.MobileTeamAttnDescriptionString = string.Format("[{0}] {1}\r\nDate: {2} || In: {3} || Out: {4} || {5}", obj.EmployeeNo, obj.EmployeeName, obj.AttnDate.ToString("dd MMM"), obj.InTime != null ? ((DateTime)obj.InTime).ToString("HH:mm") : "", obj.OutTime != null ? ((DateTime)obj.OutTime).ToString("HH:mm") : " ", obj.AttenType.ToString());
// obj.Location.InTimeNearestAddress = oDailyAttnProcess.InTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.InTimeNearestAddress.Length, 42));
// obj.Location.OutTimeNearestAddress = oDailyAttnProcess.OutTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.OutTimeNearestAddress.Length, 42));
// }
// else if (oDailyAttnProcess.InTimeNearestAddress == "" && oDailyAttnProcess.OutTimeNearestAddress == "")
// {
// //obj.MobileTeamAttnDescriptionString = string.Format("[{0}] {1}\r\nDate: {2} || {3}", obj.EmployeeNo, obj.EmployeeName, obj.AttnDate.ToString("dd MMM"), obj.AttenType.ToString());
// }
// else
// {
// //obj.MobileTeamAttnDescriptionString = string.Format("[{0}] {1}\r\nDate: {2} || In: {3} || Out: {4} || {5}", obj.EmployeeNo, obj.EmployeeName, obj.AttnDate.ToString("dd MMM"), obj.InTime != null ? ((DateTime)obj.InTime).ToString("HH:mm") : "", obj.OutTime != null ? ((DateTime)obj.OutTime).ToString("HH:mm") : " ", obj.AttenType.ToString());
// obj.Location.InTimeNearestAddress = oDailyAttnProcess.InTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.InTimeNearestAddress.Length, 42));
// obj.Location.OutTimeNearestAddress = oDailyAttnProcess.OutTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.OutTimeNearestAddress.Length, 42));
// }
// return obj;
//}
public static DailyAttnProcessTModel ConvertToDailyAttnProcessTModelRequest(this DailyAttnProcess oDailyAttnProcess)
{
DailyAttnProcessTModel obj = new DailyAttnProcessTModel();
obj.Location = new AttendanceLocationTModel();
obj.ID = oDailyAttnProcess.ID;
obj.PKID = oDailyAttnProcess.ID;
obj.DailyAttnProcessID = oDailyAttnProcess.ID;
obj.EmployeeID = oDailyAttnProcess.EmployeeID;
obj.AttnDate = oDailyAttnProcess.AttnDate;
obj.ShiftID = oDailyAttnProcess.ShiftID;
obj.InTime = oDailyAttnProcess.InTime;
obj.OutTime = oDailyAttnProcess.OutTime;
obj.ActualInTime = oDailyAttnProcess.ActualInTime;
obj.ActualOutTime = oDailyAttnProcess.ActualOutTime;
obj.ActualStatus = oDailyAttnProcess.AttenType;
obj.ActualOT = oDailyAttnProcess.OTHour;
obj.AttenType = oDailyAttnProcess.AttenType;
obj.EmpAttenType = oDailyAttnProcess.AttenType;
obj.WFStatus = oDailyAttnProcess.WFStatus;
obj.Comments = oDailyAttnProcess.Comments;
obj.LMComments = oDailyAttnProcess.LMRemarks;
obj.Reason = oDailyAttnProcess.Reason;
obj.ShiftShortName = string.Empty;// oDailyAttnProcess.ShiftName != null ? oDailyAttnProcess.ShiftName : string.Empty;
obj.Location.ZipcodeInTime = oDailyAttnProcess.ZipcodeInTime;
obj.Location.ZipcodeOutTime = oDailyAttnProcess.ZipcodeOutTime;
obj.Location.InTimeLatitude = oDailyAttnProcess.InTimeLatitude;
obj.Location.OutTimeLatitude = oDailyAttnProcess.OutTimeLatitude;
obj.Location.InTimeLongitude = oDailyAttnProcess.InTimeLongitude;
obj.Location.OutTimeLongitude = oDailyAttnProcess.OutTimeLongitude;
obj.Location.InTimeNearestAddress = oDailyAttnProcess.InTimeNearestAddress;
obj.Location.OutTimeNearestAddress = oDailyAttnProcess.OutTimeNearestAddress;
obj.LocationID = oDailyAttnProcess.LocationID;
obj.IsFromMobile = oDailyAttnProcess.IsFromMobile;
return obj;
}
public static DailyAttnProcessTModel ConvertToDailyAttnProcessTModelRequest(this DailyAttnProcess oDailyAttnProcess,
Shift oShift, Employee oEmp, bool withString = false)
{
DailyAttnProcessTModel obj = new DailyAttnProcessTModel();
obj.Location = new AttendanceLocationTModel();
obj.ID = oDailyAttnProcess.ID;
obj.PKID = oDailyAttnProcess.ID;
obj.DailyAttnProcessID = oDailyAttnProcess.ID;
obj.EmployeeID = oDailyAttnProcess.EmployeeID;
if (oEmp != null)
{
obj.EmployeeName = oEmp.Name;
obj.EmployeeNo = oEmp.EmployeeNo;
}
else
{
obj.EmployeeName = string.Empty;
obj.EmployeeNo = string.Empty;
}
obj.ShiftID = oDailyAttnProcess.ShiftID;
obj.EmpAttenType = oDailyAttnProcess.AttenType;
obj.AttenType = oDailyAttnProcess.AttenType;
obj.AttnDate = oDailyAttnProcess.AttnDate;
obj.InTime = oDailyAttnProcess.InTime;
obj.OutTime = oDailyAttnProcess.OutTime;
obj.ActualInTime = oDailyAttnProcess.ActualInTime;
obj.ActualOutTime = oDailyAttnProcess.ActualOutTime;
obj.ActualStatus = oDailyAttnProcess.AttenType;
obj.ActualOT = oDailyAttnProcess.OTHour;
obj.AttenType = oDailyAttnProcess.AttenType;
obj.EmpAttenType = oDailyAttnProcess.AttenType;
obj.WFStatus = oDailyAttnProcess.WFStatus;
obj.Reason = oDailyAttnProcess.Reason;
obj.Comments = oDailyAttnProcess.Comments;
obj.LMComments = oDailyAttnProcess.LMRemarks;
obj.ShiftShortName = oShift != null ? oShift.ShortName : "";
obj.Location.ZipcodeInTime = oDailyAttnProcess.ZipcodeInTime;
obj.Location.ZipcodeOutTime = oDailyAttnProcess.ZipcodeOutTime;
obj.Location.InTimeLatitude = oDailyAttnProcess.InTimeLatitude;
obj.Location.OutTimeLatitude = oDailyAttnProcess.OutTimeLatitude;
obj.Location.InTimeLongitude = oDailyAttnProcess.InTimeLongitude;
obj.Location.OutTimeLongitude = oDailyAttnProcess.OutTimeLongitude;
obj.Location.InTimeNearestAddress = oDailyAttnProcess.InTimeNearestAddress;
obj.Location.OutTimeNearestAddress = oDailyAttnProcess.OutTimeNearestAddress;
if (withString == true)
{
if (oDailyAttnProcess.InTimeNearestAddress == "" && oDailyAttnProcess.OutTimeNearestAddress != "")
{
obj.MobileTeamAttnDescriptionString = string.Format("[{0}] {1}\r\nDate: {2} || Out: {3} || {4}", obj.EmployeeNo, obj.EmployeeName, obj.AttnDate.ToString("dd MMM"), obj.OutTime != null ? ((DateTime)obj.OutTime).ToString("HH:mm") : " ", obj.AttenType.ToString());
obj.Location.OutTimeNearestAddress = oDailyAttnProcess.OutTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.OutTimeNearestAddress.Length, 42));
}
else if (oDailyAttnProcess.OutTimeNearestAddress == "" && oDailyAttnProcess.InTimeNearestAddress != "")
{
obj.MobileTeamAttnDescriptionString = string.Format("[{0}] {1}\r\nDate: {2} || In: {3} || {4}", obj.EmployeeNo, obj.EmployeeName, obj.AttnDate.ToString("dd MMM"), obj.InTime != null ? ((DateTime)obj.InTime).ToString("HH:mm") : "", obj.AttenType.ToString());
obj.Location.InTimeNearestAddress = oDailyAttnProcess.InTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.InTimeNearestAddress.Length, 42));
}
else if (oDailyAttnProcess.InTimeNearestAddress != "" && oDailyAttnProcess.OutTimeNearestAddress != "")
{
obj.MobileTeamAttnDescriptionString = string.Format("[{0}] {1}\r\nDate: {2} || In: {3} || Out: {4} || {5}", obj.EmployeeNo, obj.EmployeeName, obj.AttnDate.ToString("dd MMM"), obj.InTime != null ? ((DateTime)obj.InTime).ToString("HH:mm") : "", obj.OutTime != null ? ((DateTime)obj.OutTime).ToString("HH:mm") : " ", obj.AttenType.ToString());
obj.Location.InTimeNearestAddress = oDailyAttnProcess.InTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.InTimeNearestAddress.Length, 42));
obj.Location.OutTimeNearestAddress = oDailyAttnProcess.OutTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.OutTimeNearestAddress.Length, 42));
}
else if (oDailyAttnProcess.InTimeNearestAddress == "" && oDailyAttnProcess.OutTimeNearestAddress == "")
{
obj.MobileTeamAttnDescriptionString = string.Format("[{0}] {1}\r\nDate: {2} || In: {3} || Out: {4} || \n{5}", obj.EmployeeNo, obj.EmployeeName, obj.AttnDate.ToString("dd MMM"), obj.InTime != null ? ((DateTime)obj.InTime).ToString("HH:mm") : "", obj.OutTime != null ? ((DateTime)obj.OutTime).ToString("HH:mm") : " ", obj.AttenType.ToString());
}
else
{
obj.MobileTeamAttnDescriptionString = string.Format("[{0}] {1}\r\nDate: {2} || In: {3} || Out: {4} || {5}", obj.EmployeeNo, obj.EmployeeName, obj.AttnDate.ToString("dd MMM"), obj.InTime != null ? ((DateTime)obj.InTime).ToString("HH:mm") : "", obj.OutTime != null ? ((DateTime)obj.OutTime).ToString("HH:mm") : " ", obj.AttenType.ToString());
obj.Location.InTimeNearestAddress = oDailyAttnProcess.InTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.InTimeNearestAddress.Length, 42));
obj.Location.OutTimeNearestAddress = oDailyAttnProcess.OutTimeNearestAddress.Substring(0, Math.Min(oDailyAttnProcess.OutTimeNearestAddress.Length, 42));
}
}
return obj;
}
//public static List<DailyAttnProcessTModel> ConvertToDailyAttnProcessTModels(this IEnumerable<DailyAttnProcess> oDailyAttnProcess)
//{
// List<DailyAttnProcessTModel> objs = new List<DailyAttnProcessTModel>();
// List<Shift> oShifts = new ShiftService().GetAllShift();
// foreach (DailyAttnProcess item in oDailyAttnProcess)
// {
// Shift oShift = oShifts.FirstOrDefault(x => x.ID == item.ShiftID);
// objs.Add(item.ConvertToDailyAttnProcessTModelRequest(oShift));
// }
// return objs;
//}
public static List<DailyAttnProcessTModel> ConvertToDailyAttnProcessTModels(this IEnumerable<DailyAttnProcess> oDailyAttnProcess, int linemanagerid)
{
List<DailyAttnProcessTModel> objs = new List<DailyAttnProcessTModel>();
//List<Shift> oShifts = new ShiftService().GetAllShift();
DataTable oShifts = new ShiftService().GetAllShiftWithNoLock();
DataTable empdatatable = new EmployeeService().GetSubordinatesByLineManagerForMobileWithNoLock(linemanagerid);
List<Employee> oEmps = new List<Employee>();
foreach (DataRow orow in empdatatable.Rows)
{
Employee emp = new Employee();
emp.ID = Convert.ToInt32(orow["employeeid"]);
emp.Name = orow["name"].ToString();
emp.EmployeeNo = orow["employeeno"].ToString();
oEmps.Add(emp);
}
foreach (DailyAttnProcess item in oDailyAttnProcess)
{
//Shift oShift = oShifts.FirstOrDefault(x => x.ID == item.ShiftID);
DataRow row = (item.ShiftID != null) ? oShifts.Select($"ShiftID = {item.ShiftID}").ToArray().FirstOrDefault() : null;
Shift oShift = (row != null) ? new Shift { ID = row.Field<int>("ShiftID"), ShortName = row.Field<string>("ShortName") } : null;
Employee oEmp = oEmps.Count > 0 ? oEmps.FirstOrDefault(x => x.ID == item.EmployeeID) : null;
objs.Add(item.ConvertToDailyAttnProcessTModelRequest(oShift, oEmp, true));
}
return objs;
}
public static List<DailyAttnProcessTModel> ConvertToDailyAttnProcessTModels(this IEnumerable<DailyAttnProcess> oDailyAttnProcess, Employee emp)
{
List<DailyAttnProcessTModel> objs = new List<DailyAttnProcessTModel>();
//List<Shift> oShifts = new ShiftService().GetAllShift();
DataTable oShifts = new ShiftService().GetAllShiftWithNoLock();
foreach (DailyAttnProcess item in oDailyAttnProcess)
{
//Shift oShift = oShifts.FirstOrDefault(x => x.ID == item.ShiftID);
DataRow row = (item.ShiftID != null) ? oShifts.Select($"ShiftID = {item.ShiftID}").ToArray().FirstOrDefault() : null;
Shift oShift = (row != null) ? new Shift { ID = row.Field<int>("ShiftID"), ShortName = row.Field<string>("ShortName") } : null;
objs.Add(item.ConvertToDailyAttnProcessTModelRequest(oShift, emp, true));
}
return objs;
}
public static List<DailyAttnProcessTModel> ConvertToDailyAttnProcessTModels(this IEnumerable<DailyAttnProcess> oDailyAttnProcess, Employee emp, bool shiftRefresh)
{
List<DailyAttnProcessTModel> objs = new List<DailyAttnProcessTModel>();
foreach (DailyAttnProcess item in oDailyAttnProcess)
{
objs.Add(item.ConvertToDailyAttnProcessTModelRequest(null, emp, false));
}
return objs;
}
#endregion
#region OTPreApproval Assemblers
//public static OTPreApprovalTModel ConvertToTModel(this OTPreApproval oModel, Employee oEmp)
//{
// return new OTPreApprovalTModel()
// {
// PKID = oModel.ID,
// EmployeeID = oModel.EmployeeID,
// EmployeeNo = oEmp.EmployeeNo,
// EmployeeName = oEmp.Name,
// PreApproveDate = oModel.PreApproveDate,
// OTHours = oModel.OTHours,
// LMOTHours = oModel.LMOTHour,
// WFStatus = oModel.WFStatus,
// FromTime = oModel.FromTime,
// ToTime = oModel.ToTime,
// Reason = oModel.Reason,
// LMID = (oModel.LMID != null && !oModel.LMID.IsUnassigned) ? oModel.LMID : 0,
// PreApprovalDescription = oModel.PreApprovalDescription
// };
//}
//public static List<OTPreApprovalTModel> ConvertToTModels(this IEnumerable<OTPreApproval> oModels)
//{
// List<OTPreApprovalTModel> objs = new List<OTPreApprovalTModel>();
// if (oModels != null && oModels.Count() > 0)
// {
// List<Employee> oEmployees = Employee.GetByEmpIDs(String.Join(",", oModels.Select(x => x.EmployeeID.ToString()).Distinct()));
// foreach (OTPreApproval item in oModels)
// {
// Employee oEmp = oEmployees.FirstOrDefault(x => x.ID == item.EmployeeID);
// objs.Add(item.ConvertToTModel(oEmp));
// }
// }
// return objs;
//}
#endregion
#region OTSubmit Assemblers
//public static OTSubmitTModel ConvertToTModel(this OTSubmit oModel, Employee oEmp)
//{
// return new OTSubmitTModel()
// {
// PKID = oModel.ID,
// OTSubmitDate = oModel.OTSubmitDate,
// FromTime = oModel.FromTime,
// ToTime = oModel.ToTime,
// SalaryMonth = oModel.SalaryMonth,
// EmployeeID = oModel.EmployeeID,
// EmployeeNo = oEmp.EmployeeNo,
// EmployeeName = oEmp.Name,
// OTHours = oModel.OTHours,
// Remarks = oModel.Remarks,
// OTPreApprovalID = (oModel.OTPreApprovalID != null && !oModel.OTPreApprovalID.IsUnassigned) ? oModel.OTPreApprovalID : 0,
// LMID = (oModel.LMID != null && !oModel.LMID.IsUnassigned) ? oModel.LMID : 0,
// LMApprovedDate = oModel.LMApprovedDate,
// LMOTHour = oModel.LMOTHour,
// LMRemarks = oModel.LMRemarks,
// DHID = (oModel.DHID != null && !oModel.DHID.IsUnassigned) ? oModel.DHID : 0,
// DHApprovedDate = oModel.DHApprovedDate,
// DHOTHour = oModel.DHOTHour,
// DHRemarks = oModel.DHRemarks,
// WFStatus = oModel.WFStatus
// };
//}
//public static List<OTSubmitTModel> ConvertToTModels(this IEnumerable<OTSubmit> oModels)
//{
// List<OTSubmitTModel> objs = new List<OTSubmitTModel>();
// if (oModels != null && oModels.Count() > 0)
// {
// List<Employee> oEmployees = Employee.GetByEmpIDs(String.Join(",", oModels.Select(x => x.EmployeeID.ToString()).Distinct()));
// foreach (OTSubmit item in oModels)
// {
// Employee oEmp = oEmployees.FirstOrDefault(x => x.ID == item.EmployeeID);
// objs.Add(item.ConvertToTModel(oEmp));
// }
// }
// return objs;
//}
#endregion
#region Location Assemblers
public static LocationTModel ConvertToTModel(this Location oLocation)
{
return oLocation == null ? null : new LocationTModel
{
Id = oLocation.ID,
Code = oLocation.Code,
Name = oLocation.Name,
AttendancePoint = oLocation.AttendancePoint,
Latitude = oLocation.Latitude,
Longitude = oLocation.Longitude,
LatLongSetBy = oLocation.LatLongSetBy,
LatLongSetDate = oLocation.LatLongSetDate,
LatLongApproveStatus = oLocation.LatLongApproveStatus
};
}
public static List<LocationTModel> ConvertToTModels(this IEnumerable<Location> oLocations)
{
List<LocationTModel> objs = new List<LocationTModel>();
foreach (Location item in oLocations)
{
objs.Add(item.ConvertToTModel());
}
return objs;
}
#endregion
#region Location Assemblers
public static EmpFieldTrack ConvertToTModel(this EmpFieldTrackTModel empFieldTrackModel)
{
return empFieldTrackModel == null ? null : new EmpFieldTrack
{
EmployeeID = empFieldTrackModel.EmployeeID,
LocationID = empFieldTrackModel.LocationID ?? 0,
Latitude = empFieldTrackModel.Latitude,
Longitude = empFieldTrackModel.Longitude,
Client = empFieldTrackModel.Client,
NearestAddress = empFieldTrackModel.NearestAddress,
Remarks = empFieldTrackModel.Remarks,
TrackType = empFieldTrackModel.TrackType,
TranDateTime = DateTime.Now,
ZipCode = empFieldTrackModel.ZipCode
};
}
//public static List<LocationTModel> ConvertToTModels(this IEnumerable<Location> oLocations)
//{
// List<LocationTModel> objs = new List<LocationTModel>();
// foreach (Location item in oLocations)
// {
// objs.Add(item.ConvertToTModel());
// }
// return objs;
//}
#endregion
}
}