using Ease.Core.DataAccess; using HRM.BO; using HRM.BO.Configuration; using HRM.DA; using HRM.UI.MODELS; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore.Storage.Internal; using Microsoft.EntityFrameworkCore.ValueGeneration.Internal; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading; using static iTextSharp.text.pdf.AcroFields; namespace HRM.UI.Controllers.Attendance { [Route("api/Attendance")] [ApiController] [Authorize] public class AttendanceController : ControllerBase { private readonly IShiftService _shiftService; private readonly IHolidayCalendarService _holidayCalendarService; private readonly IAttnNationalHolidayService _attnNationalHolidayService; private readonly IWorkPlanGroupService _workPlanGroupService; private readonly IEmployeeWorkPlanSetupService _employeeWorkPlanSetupService; private readonly IShiftRotationService _shiftRotationService; private readonly IDailyAttnProcessService _dailyAttnProcessService; private readonly IActingResponsibilitySetupService _actingResponsibilitySetupService; private readonly IEmployeeOutsideDutyService _employeeOutsideDutyService; private readonly IMonthlyWorkPlanService _monthyWorkPlan; private readonly IActingResponsibilitySetupService _actingResponsiblity; private readonly IAttnRawDataService _attnRawDataService; private readonly IEmployeeService _employeeService; private readonly IPayrollComponentListService _payrollComponentListService; private readonly IAllowanceDeductionService _allowanceDeductionService; private readonly ITermService _termService; private readonly IOutsideDutyService _outsideDutyService; private readonly IOptions _emailSettings; private readonly ILeaveYearService _leaveYearService; private readonly IAccessCardService _accessCardService; private readonly ICardOperationService _cCardOperationService; public AttendanceController(IShiftService shiftService, IHolidayCalendarService holidayCalendarService, IAttnNationalHolidayService attnNationalHolidayService, IWorkPlanGroupService workPlanGroupService, IEmployeeWorkPlanSetupService employeeWorkPlanSetupService, IShiftRotationService shiftRotationService, IDailyAttnProcessService dailyAttnProcessService, IEmployeeOutsideDutyService employeeOutsideDutyService, IMonthlyWorkPlanService monthyworkplan, IActingResponsibilitySetupService actingResponsiblity, IEmployeeService employeeService, IAttnRawDataService attnRawDataService, IActingResponsibilitySetupService actingResponsibilitySetupService, IPayrollComponentListService payrollComponentListService, IAllowanceDeductionService allowanceDeductionService, ITermService termService, IOutsideDutyService outsideDutyService, IOptions emailSettings, ILeaveYearService leaveYearService, IAccessCardService oaccessCardService, ICardOperationService ocCardOperationService) { this._shiftService = shiftService; this._holidayCalendarService = holidayCalendarService; this._attnNationalHolidayService = attnNationalHolidayService; this._workPlanGroupService = workPlanGroupService; this._employeeWorkPlanSetupService = employeeWorkPlanSetupService; this._shiftRotationService = shiftRotationService; this._dailyAttnProcessService = dailyAttnProcessService; this._employeeOutsideDutyService = employeeOutsideDutyService; this._monthyWorkPlan = monthyworkplan; this._actingResponsiblity = actingResponsiblity; this._attnRawDataService = attnRawDataService; this._employeeService = employeeService; this._actingResponsibilitySetupService = actingResponsibilitySetupService; this._payrollComponentListService = payrollComponentListService; this._allowanceDeductionService = allowanceDeductionService; this._termService = termService; this._outsideDutyService = outsideDutyService; this._emailSettings = emailSettings; this._leaveYearService = leaveYearService; this._accessCardService = oaccessCardService; this._cCardOperationService = ocCardOperationService; } // SHIFT [HttpGet("getShifts/{code}/{name}/{status}")] public ActionResult GetShifts(string code, string name, EnumStatus status) { code = GlobalFunctions.GetApiDefaultData(code); name = GlobalFunctions.GetApiDefaultData(name); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List items = new List(); try { items = _shiftService.Get(code, name, status, (int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getShiftById/{id}")] public ActionResult GetShiftById(int id) { Shift item = new Shift(); try { item = _shiftService.Get(id); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getShiftByName/{name}")] public ActionResult GetShiftByName(string name) { Shift item = new Shift(); try { item = _shiftService.Get(name); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getOutSideDutyTypes")] public ActionResult GetOutSideDutyTypes() { List oOutsideDuty = new List(); try { oOutsideDuty = _outsideDutyService.Get(EnumStatus.Active); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(oOutsideDuty); } [HttpGet("getAttendanceAllowancePrev")] public ActionResult GetAttendanceAllowancePrev() { List componenentList = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { List ptipes = new List(); ptipes.Add(enumPayrollComponentType.Over_Time); ptipes.Add(enumPayrollComponentType.Allowance); componenentList = _payrollComponentListService.Get(ptipes, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(componenentList); } [HttpGet("getAttendanceAllowance")] public ActionResult GetAttendanceAllowance() { List oAllowanceDeduction = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { oAllowanceDeduction = _allowanceDeductionService.Get(EnumStatus.Active, EnumAllowOrDeduct.Allowance, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(oAllowanceDeduction); } [HttpGet("getAttendanceOverTimeAllowance")] public ActionResult GetAttendanceOverTimeAllowance() { List oTerm = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { oTerm = _termService.Get(EnumStatus.Active, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(oTerm); } [HttpGet("getShiftByCounterClock/{isCounterClock}")] public ActionResult GetShiftByCounterClock(bool isCounterClock) { List items = new List(); try { items = _shiftService.Get(isCounterClock); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("isShiftExist/{shiftCode}/{shortName}/{shiftId}")] public ActionResult IsShiftExist(string shiftCode, string shortName, int shiftId) { bool ans; try { ans = _shiftService.IsExist(shiftCode, shortName, shiftId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(ans); } [HttpPost] [Route("deleteShiftById")] public ActionResult DeleteShiftById(Shift oshift) { try { _shiftService.Delete(oshift.ID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("saveTemporaryShift")] public ActionResult SaveTemporaryShift(UpdateRosterModel oUpdateRosterModel) { try { _actingResponsibilitySetupService.SaveTemporaryShift(oUpdateRosterModel); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("saveShift")] public ActionResult SaveShift(Shift item) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); if (item.IsNew == true) { item.CreatedBy = currentUser.UserID; item.CreatedDate = DateTime.Today; item.Status = EnumStatus.Active; item.payrollTypeID = (int)currentUser.PayrollTypeID; } else { item.ModifiedBy = currentUser.UserID; item.ModifiedDate = DateTime.Today; } try { _shiftService.Save(item); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } // Holiday Calendar [HttpGet("getHolidaysByLocId/{locId}")] public ActionResult GetHolidaysByLocId(int locId) { List items = new List(); try { items = _holidayCalendarService.GetHoliDays(locId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpPost("ProcessHoliday")] public ActionResult ProcessHoliday(HolidayCalendar Item) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); try { _holidayCalendarService.Process((int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(true); } [HttpGet("getNationalHolidays")] public ActionResult GetNationalHolidays() { List items = new List(); try { items = _holidayCalendarService.GetNationalHolidays(); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getHolidayById/{id}")] public ActionResult GetHolidayById(int id) { HolidayCalendar item = new HolidayCalendar(); try { item = _holidayCalendarService.Get(id); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getTotalMonthlyHolidays/{locationNumber}/{firstDateOfMonth}/{lastDateOfMonth}")] public ActionResult GetTotalMonthlyHolidays(int locationNumber, DateTime firstDateOfMonth, DateTime lastDateOfMonth) { int ans; try { ans = _holidayCalendarService.GetTotalMonthlyHolidays(locationNumber, firstDateOfMonth, lastDateOfMonth); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(ans); } [HttpGet("getAllHolidays")] public ActionResult GetAllHolidays() { List items = new List(); try { items = _holidayCalendarService.Get(); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getWeeklyHolidays")] public ActionResult GetWeeklyHolidays() { List items = new List(); try { items = _holidayCalendarService.GetWeeklyHoliDay(); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getWeeklyAndLocHoliday/{locId}")] public ActionResult GetWeeklyAndLocHoliday(int locId) { List items = new List(); try { items = _holidayCalendarService.GetWeeklyAndLocHoliday(locId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getNoOfHoliday")] public ActionResult GetNoOfHoliday() { double ans; try { ans = _holidayCalendarService.GetNoofHoliday(); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(ans); } [HttpGet("getHolidaysByMonthRange/{locationId}/{startDate}/{endDate}")] public ActionResult GetHolidaysByMonthRange(int locationId, DateTime startDate, DateTime endDate) { List items = new List(); try { items = _holidayCalendarService.GetbyMonthRange(locationId, startDate, endDate); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getHolidaysByDateRange/{startDate}/{endDate}")] public ActionResult GetHolidaysByDateRange(DateTime startDate, DateTime endDate) { List items = new List(); try { items = _holidayCalendarService.GetbyDateRange(startDate, endDate); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpPost] [Route("saveHoliday")] public ActionResult SaveHoliday(HolidayCalendar item) { try { _holidayCalendarService.Save(item); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("deleteHolidayById")] public ActionResult DeleteHolidayById(int id) { try { _holidayCalendarService.Delete(id); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("deleteAllHolidayByYear")] public ActionResult DeleteAllHolidayByYear(int year) { try { _holidayCalendarService.DeleteAll(year); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } // AttnNationalHoliday [HttpGet("getAttnNationalHolidayById/{id}")] public ActionResult GetAttnNationalHolidayById(int id) { AttnNationalHoliday item = new AttnNationalHoliday(); try { item = _attnNationalHolidayService.Get(id); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getupcommingNationalHoliday/{fromDate}")] public ActionResult getupcommingNationalHoliday(string fromDate) { List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); DateTime fdate = GlobalFunctions.GetApiDefaultDateData(fromDate); //int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { items = _attnNationalHolidayService.GetupcommintHolidayByUserId(fdate, (int)currentUser.PayrollTypeID); //items = _attnNationalHolidayService.GetupcommintHoliday(new DateTime(2021,1,1), payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getAttnNationalHolidayListByDateRange/{fromDate}/{toDate}")] public ActionResult GetAttnNationalHolidayListByDateRange(DateTime fromDate, DateTime toDate) { List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { items = _attnNationalHolidayService.Get(fromDate, toDate, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getAttnNationalHolidayListByStatus/{status}")] public ActionResult GetAttnNationalHolidayListByStatus(EnumStatus status) { List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { LeaveYear oLeaveyear = _leaveYearService.GetCurrentYear((int)currentUser.PayrollTypeID); items = _attnNationalHolidayService.GetByMonthAndPayrollTypeWithDetails(oLeaveyear.StartDate, oLeaveyear.EndDate, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getAttnNationalHolidayLocationList/{id}")] public ActionResult getAttnNationalHolidayLocationList(int id) { List items = new List(); try { items = _attnNationalHolidayService.GetAttnNationalHolidayLocation(id); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getAttnNationalHolidayShiftList/{id}")] public ActionResult GetAttnNationalHolidayShiftList(int id) { List items = new List(); try { items = _attnNationalHolidayService.GetAttnNationalHolidayShift(id); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getAttnNationalHolidayListByMonthAndPayrollType/{fromDate}/{toDate}")] public ActionResult GetAttnNationalHolidayListByMonthAndPayrollType(DateTime fromDate, DateTime toDate) { List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { items = _attnNationalHolidayService.GetByMonthAndPayrollType(fromDate, toDate, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpPost] [Route("deleteAttnNationalHolidayById")] public ActionResult DeleteAttnNationalHolidayById(AttnNationalHoliday nationalHoliday) { try { _attnNationalHolidayService.Delete(nationalHoliday.ID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("saveAttnNationalHoliday")] public ActionResult SaveAttnNationalHoliday(AttnNationalHoliday item) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); int ans; try { ans = _attnNationalHolidayService.Save(item, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(ans); } // WorkPlanGroup [HttpGet("getWorkPlanGroupById/{id}")] public ActionResult GetWorkPlanGroupById(int id) { WorkPlanGroup item = new WorkPlanGroup(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { item = _workPlanGroupService.Get(id); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("GetWorkPlanGroups/{status}/{Name}/{Type}")] public ActionResult GetWorkPlanGroups(EnumStatus status, string name, string groupType) { EnumWorkPlanGroup? gType = null; if (GlobalFunctions.GetApiDefaultIntData(groupType) != null) gType = (EnumWorkPlanGroup)GlobalFunctions.GetApiDefaultIntData(groupType); name = GlobalFunctions.GetApiDefaultData(name); List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { items = _workPlanGroupService.Get(status, (int)currentUser.PayrollTypeID, name, gType); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } //[HttpGet("getWorkPlanGroupListByName/{name}")] //public ActionResult GetWorkPlanGroupListByName(string name) //{ // List items = new List(); // CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); // int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); // try // { // items = _workPlanGroupService.GetByName(name, payrollTypeId); // } // catch (Exception e) // { // return StatusCode(StatusCodes.Status500InternalServerError, e.Message); // } // return Ok(items); //} [HttpGet("getAllWorkPlanGroupList")] public ActionResult GetAllWorkPlanGroupList() { List items = new List(); try { items = _workPlanGroupService.GetAll(); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpPost] [Route("saveWorkPlanGroup")] public ActionResult SaveWorkPlanGroup(WorkPlanGroup item) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); if (item.IsNew == true) { item.CreatedDate = DateTime.Today; item.CreatedBy = currentUser.UserID; item.PayrollTypeID = item.PayrollTypeID; } else { item.ModifiedDate = DateTime.Today; item.CreatedBy = currentUser.UserID; } int ans; try { ans = _workPlanGroupService.Save(item, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(ans); } [HttpPost] [Route("deleteWorkPlanGroupById")] public ActionResult DeleteWorkPlanGroupById(WorkPlanGroup item) { try { _workPlanGroupService.Delete(item.ID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } // EmployeeWorkPlanSetup [HttpGet("getEmployeeWorkPlanSetupById/{id}")] public ActionResult GetEmployeeWorkPlanSetupById(int id) { EmployeeWorkPlanSetup item = new EmployeeWorkPlanSetup(); try { item = _employeeWorkPlanSetupService.Get(id); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getEmployeeWorkPlanSetupByEmpId/{empId}")] public ActionResult GetEmployeeWorkPlanSetupByEmpId(int empId) { EmployeeWorkPlanSetup item = new EmployeeWorkPlanSetup(); try { item = _employeeWorkPlanSetupService.Get(empId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getEmployeeWorkPlanSetupList")] public ActionResult GetEmployeeWorkPlanSetupList(int empId) { List items = new List(); try { items = _employeeWorkPlanSetupService.Get(); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpPost("IsEmpExistInWorkplan")] public ActionResult IsEmpExistInWorkplan(List empworkPlans) { List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); try { items = _employeeWorkPlanSetupService.IsEmpExistInWorkplan(empworkPlans, (int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getEmployeeWorkPlanSetupByWorkPlanGroup/{type}")] public ActionResult GetEmployeeWorkPlanSetupByWorkPlanGroup(EnumWorkPlanGroup type) { List items = new List(); try { items = _employeeWorkPlanSetupService.Get(type); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getEmployeeWorkPlanSetupForFixedWP/{groupId}/{holiday}")] public ActionResult GetEmployeeWorkPlanSetupForFixedWP(int groupId, DayOfWeek holiday) { List items = new List(); try { items = _employeeWorkPlanSetupService.GetForFixedWP(groupId, holiday); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getNotYetAssiged")] public ActionResult getNotYetAssiged() { //List items = new List(); List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); try { //items = _employeeWorkPlanSetupService.NotYetAssigned((int)currentUser.PayrollTypeID); items = _employeeService.NotYetAssigned((int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getEmployeeWorkPlanSetupByWPGroupID/{groupId}")] public ActionResult GetEmployeeWorkPlanSetupByWPGroupID(int groupId) { List items = new List(); try { items = _employeeWorkPlanSetupService.GetByWPGroupID(groupId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("isEmployeeExistInWorkPlan/{empId}")] public ActionResult isEmployeeExistInWorkPlan(int empId) { bool ans; try { ans = _employeeWorkPlanSetupService.IsEmployeeExistInWorkplan(empId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(ans); } [HttpGet("isEmployeeWorkPlanSetupExist/{groupId}/{weekendOn}")] public ActionResult IsEmployeeWorkPlanSetupExist(int groupId, DayOfWeek weekendOn) { bool ans; try { ans = _employeeWorkPlanSetupService.IsExist(groupId, weekendOn); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(ans); } [HttpGet("getEmployeeWorkPlanSetupByPayrollTypeID")] public ActionResult GetEmployeeWorkPlanSetupByWPGroupID() { List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { items = _employeeWorkPlanSetupService.GetByPayrollTypeID(payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getAllEmployeeWorkPlanSetup")] public ActionResult GetAllEmployeeWorkPlanSetup() { List items = new List(); try { items = _employeeWorkPlanSetupService.GetAll(); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpPost] [Route("saveEmployeeWorkPlanSetup")] public ActionResult SaveEmployeeWorkPlanSetup(EmployeeWorkPlanSetup item) { int ans; CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { ans = _employeeWorkPlanSetupService.Save(item, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(ans); } [HttpPost] [Route("saveEmployeeWorkPlanSetupList")] public ActionResult SaveEmployeeWorkPlanSetupList(List EmployeeWorkPlanSetups) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); int loggedInId = currentUser.UserID; try { foreach (EmployeeWorkPlanSetup employeeWorkPlanSetup in EmployeeWorkPlanSetups) { if (employeeWorkPlanSetup.WorkPlanGroupType != EnumWorkPlanGroup.Fixed) { DateTime targetDate = employeeWorkPlanSetup.StartDate.AddDays(6); int nShiftInterval = 7; TimeSpan st = targetDate - employeeWorkPlanSetup.StartDate; int dayCount = st.Days; int nCircleDay = (dayCount % nShiftInterval); int dayCycle = nShiftInterval - nCircleDay - 1; if (dayCycle == 0) employeeWorkPlanSetup.WeekEndOn = employeeWorkPlanSetup.StartDate.DayOfWeek; else employeeWorkPlanSetup.WeekEndOn = null; } } EmployeeWorkPlanSetups.ForEach(x => x.CreatedBy = loggedInId); _employeeWorkPlanSetupService.Save(EmployeeWorkPlanSetups, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("saveFixedWPlansList")] public ActionResult SaveFixedWPlansList(List items) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { _employeeWorkPlanSetupService.SaveFixedWPlans(items, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("deleteEmployeeWorkPlanSetupById")] public ActionResult DleteEmployeeWorkPlanSetupById(EmployeeWorkPlanSetup item) { try { _employeeWorkPlanSetupService.Delete(item.ID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("deleteEmployeeWorkPlanSetupByGroupId")] public ActionResult DeleteEmployeeWorkPlanSetupByGroupId(EmployeeWorkPlanSetup item) { try { _employeeWorkPlanSetupService.Delete(item.WorkPlanGroupID, DayOfWeek.Saturday); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } // ShiftRotation [HttpGet("getShiftRotationById/{id}")] public ActionResult GetShiftRotationById(int id) { ShiftRotation item = new ShiftRotation(); try { item = _shiftRotationService.Get(id); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getShiftRotationByWorkPlanGroupType/{workPlanGroupType}")] public ActionResult GetShiftRotationByWorkPlanGroupType(EnumWorkPlanGroup workPlanGroupType) { List items = new List(); try { items = _shiftRotationService.Get(workPlanGroupType); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getShiftRotationByWorkPlanGroup/{workPlanGroup}")] public ActionResult GetShiftRotationByWorkPlanGroup(EnumWorkPlanGroup workPlanGroup) { List items = new List(); try { items = _shiftRotationService.Get(workPlanGroup); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getShiftRotationByStatus/{status}")] public ActionResult GetShiftRotationByStatus(EnumStatus status) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List items = new List(); try { items = _shiftRotationService.Get(status, (int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getShiftRotationByWorkGroupType/{workPlanGroupType}/{sequence}")] public ActionResult GetShiftRotationByWorkGroupType(EnumWorkPlanGroup workPlanGroup, int sequence) { ShiftRotation item = new ShiftRotation(); try { item = _shiftRotationService.Get(workPlanGroup, sequence); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpPost] [Route("saveShiftRotation")] public ActionResult SaveShiftRotation(ShiftRotation item) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); try { _shiftRotationService.Save(item); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("deleteShiftRotationById")] public ActionResult DeleteShiftRotationById(ShiftRotation item) { try { _shiftRotationService.Delete(item.ID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost("getDailyAttnProcessByEmp")] public ActionResult getDailyAttnProcessByEmp(dynamic data) { List attnProcesses = new List(); try { var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(data)); string empids = ""; DateTime attnDate = DateTime.Today; foreach (var item in items) { int empID = (int)item["employeeid"].ToObject(); empids = empids + empID.ToString() + ","; attnDate = (DateTime)item["attnDate"].ToObject(); } if (empids.Length > 0) { empids = empids.Substring(0, empids.Length - 1); } attnDate = new DateTime(attnDate.Year, attnDate.Month, attnDate.Day); attnProcesses = this._dailyAttnProcessService.Get(empids, attnDate, attnDate); // removed by shamim, please talk to him if needed this //foreach(DailyAttnProcess process in attnProcesses) //{ // process.ActualInOutTime = (process.ActualInTime == null ? (process.InTime == null ? "" : process.InTime.Value.ToString("hh:mm tt")) : process.ActualInTime.Value.ToString("hh:mm tt") )+ " - " + (process.ActualOutTime == null ? (process.OutTime == null ? "" : process.OutTime.Value.ToString("hh:mm tt")) : process.ActualOutTime.Value.ToString("hh:mm tt")); //} } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(attnProcesses); } // DailyAttnProcess [HttpGet("getDailyAttnProcessByEmployeeId/{employeeId}")] public ActionResult GetDailyAttnProcessByEmployeeId(int employeeId) { List items = new List(); try { items = _dailyAttnProcessService.GetByEmployeeID(employeeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getMonthJobCardByEmployeeId/{employeeId}/{attnMonth}")] public ActionResult GetMonthJobCardByEmployeeId(int employeeId, string attnMonth) { JobCardReport jobCardReport = null; try { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); DateTime dateTime = Convert.ToDateTime(attnMonth); jobCardReport = _dailyAttnProcessService.GetMonthJobCardByEmployeeId(employeeId, dateTime.FirstDateOfMonth(), dateTime.LastDateOfMonth(), payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(jobCardReport); } [HttpGet("getMonthJobCardNewByEmployeeId/{employeeId}/{attnMonth}")] public ActionResult GetMonthJobCardNewByEmployeeId(int employeeId, string attnMonth) { byte[] bytes = null; try { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); DateTime dateTime = Convert.ToDateTime(attnMonth); //jobCardReport = _dailyAttnProcessService.GetMonthJobCardNewByEmployeeId(employeeId, //dateTime.FirstDateOfMonth(), dateTime.LastDateOfMonth(), payrollTypeId); bytes = new HRM.Report.AttendanceReport().ShowDateRangeJobCardMultiple(dateTime.FirstDateOfMonth(), dateTime.LastDateOfMonth(), employeeId.ToString(), payrollTypeId, "EXCEL"); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(bytes); } //[HttpGet("getDailyDataByStatusReport/{attnDate}/{sStatus}/{sEmpID}")] //public ActionResult GetDailyDataByStatusReport(DateTime attnDate, string sStatus, string sEmpID) //{ // List dailyAttnByStatusReports = new List(); // try // { // DateTime dateTime = Convert.ToDateTime(attnDate); // dailyAttnByStatusReports = _dailyAttnProcessService.GetDailyDataByStatusReport(attnDate, // sStatus, sEmpID); // } // catch (Exception e) // { // return StatusCode(StatusCodes.Status500InternalServerError, e.Message); // } // return Ok(dailyAttnByStatusReports); //} [HttpPost("getDateRangeWiseDataByStatusReport")] public ActionResult GetDateRangeWiseDataByStatusReport(dynamic data) { List dailyAttnByStatusReports = new List(); var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(data)); string sEmpID = (string)items["empIds"].ToObject(); DateTime fromDate = (DateTime)items["fromDate"].ToObject(); DateTime toDate = (DateTime)items["toDate"].ToObject(); string sStatus = (string)items["status"].ToObject(); try { dailyAttnByStatusReports = _dailyAttnProcessService.GetDateRangeWiseDataByStatusReport(fromDate, toDate, sStatus, sEmpID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(dailyAttnByStatusReports); } [HttpPost("getDailyDataByStatusReport")] public ActionResult GetDailyDataByStatusReport(dynamic data) { List dailyAttnByStatusReports = new List(); var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(data)); string sEmpID = (string)items["empIds"].ToObject(); DateTime attnDate = (DateTime)items["attnDate"].ToObject(); string sStatus = (string)items["status"].ToObject(); try { dailyAttnByStatusReports = _dailyAttnProcessService.GetDailyDataByStatusReport(attnDate, sStatus, sEmpID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(dailyAttnByStatusReports); } [HttpPost("getDataByStatusReport")] public ActionResult GetDataByStatusReport(dynamic data) { List dailyAttnByStatusReports = new List(); var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(data)); string sEmpID = (string)items["empIds"].ToObject(); DateTime fromDate = (DateTime)items["fromDate"].ToObject(); DateTime toDate = (DateTime)items["toDate"].ToObject(); string sStatus = (string)items["status"].ToObject(); try { dailyAttnByStatusReports = _dailyAttnProcessService.GetDataByStatusReport(fromDate, toDate, sStatus, sEmpID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(dailyAttnByStatusReports); } [HttpPost("getDailyOddDataByStatusReport")] public ActionResult GetDailyOddDataByStatusReport(dynamic data) { List dailyAttnByStatusReports = new List(); var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(data)); string sEmpID = (string)items["empIds"].ToObject(); DateTime attnDate = (DateTime)items["attnDate"].ToObject(); try { dailyAttnByStatusReports = _dailyAttnProcessService.GetDailyOddDataByStatusReport(attnDate, sEmpID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(dailyAttnByStatusReports); } [HttpPost("getDateWiseAttnRecords")] public ActionResult GetDateWiseAttnRecords(dynamic data) { List dailyAttnByStatusReports = new List(); var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(data)); string sEmpID = (string)items["empIds"].ToObject(); DateTime attnDate = (DateTime)items["attnDate"].ToObject(); try { dailyAttnByStatusReports = _dailyAttnProcessService.GetDateWiseAttnRecords(attnDate, sEmpID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(dailyAttnByStatusReports); } [HttpPost("getDailyAttnProcessByWFStatus")] public ActionResult GetDailyAttnProcessByWFStatus(dynamic data) { List dailyAttnProcess = new List(); List attendanceRegularizationDTOs = new List(); var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(data)); string sEmpID = (string)items["empIds"].ToObject(); DateTime fromDate = (DateTime)items["fromDate"].ToObject(); DateTime toDate = (DateTime)items["toDate"].ToObject(); EnumWFAttnStatus status = (EnumWFAttnStatus)Convert.ToInt16(items["status"].ToObject()); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); if (string.IsNullOrEmpty(sEmpID) || sEmpID == "0") { sEmpID = currentUser.EmployeeID.ToString(); } int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { dailyAttnProcess = _dailyAttnProcessService.GetAttnDataByWFStatus(fromDate, toDate, sEmpID, status); attendanceRegularizationDTOs = AttendanceProcess.GetNotSubmittedAttnData(dailyAttnProcess, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(attendanceRegularizationDTOs); } [HttpGet("getMyNotSubmittedAbsentList")] public ActionResult getMyNotSubmittedAbsentList() { List dailyAttnProcess = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { dailyAttnProcess = _dailyAttnProcessService.getMyNotSubmittedAbsentList((int)currentUser.EmployeeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(dailyAttnProcess); } [HttpGet("getMyTeamNotApprovedList")] public ActionResult getMyTeamNotApprovedList() { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); DataTable olist = null; int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { olist = _dailyAttnProcessService.getMyTeamNotApprovedList((int)currentUser.EmployeeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(olist); } [HttpGet("getMyTeamAbsentAndLeaveList/{frommonth}/{tomonth}")] public ActionResult getMyTeamAbsentAndLeaveList(string frommonth, string tomonth) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); DataTable olist = null; DateTime ddate = Convert.ToDateTime(frommonth); DateTime dtomonth = Convert.ToDateTime(tomonth); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { olist = _dailyAttnProcessService.getMyTeamAbsentAndLeaveList((int)currentUser.EmployeeID , GlobalFunctions.FirstDateOfMonth(ddate), GlobalFunctions.LastDateOfMonth(dtomonth)); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(olist); } [HttpPost("getDailyAttnProcessByEmpIdandWFStatus")] public ActionResult GetDailyAttnProcessByEmpIdandWFStatus(dynamic data) { List dailyAttnProcess = new List(); List attendanceRegularizationDTOs = new List(); var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(data)); string sEmpID = (string)items["empIds"].ToObject(); EnumWFAttnStatus status = (EnumWFAttnStatus)Convert.ToInt16(items["status"].ToObject()); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); if (string.IsNullOrEmpty(sEmpID) || sEmpID == "0") { sEmpID = currentUser.EmployeeID.ToString(); } int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { dailyAttnProcess = _dailyAttnProcessService.GetAttnDataByWFStatus(sEmpID, status); attendanceRegularizationDTOs = AttendanceProcess.GetNotSubmittedAttnData(dailyAttnProcess, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(attendanceRegularizationDTOs); } [HttpPost("updateAttendanceRegularization")] public ActionResult UpdateAttendanceRegularization(DailyAttnProcess pDailyAttnProcess) { List regularizableAttnData = new List(); regularizableAttnData.Add(pDailyAttnProcess); try { _dailyAttnProcessService.Save(regularizableAttnData, null); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } Thread CheckOutFixedPositionThread = new Thread(() => _dailyAttnProcessService.SendRegularizationApplicationMail(pDailyAttnProcess, _emailSettings.Value)); CheckOutFixedPositionThread.Start(); //try //{ // // send mail to LM // _dailyAttnProcessService.SendRegularizationApplicationMail(pDailyAttnProcess, _emailSettings.Value); //} //catch (Exception e) //{ // return StatusCode(StatusCodes.Status500InternalServerError, "Successfully Regularized. But could not send mail."); //} return Ok(); } [HttpPost("updateAttendanceRegularizationForApprove")] public ActionResult UpdateAttendanceRegularizationForApprove(DailyAttnProcess item) { if (item == null) { return StatusCode(StatusCodes.Status500InternalServerError, "No Data Found to save"); } CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); item.LineManagerID = (int)currentUser.EmployeeID; item.LMApproveDate = DateTime.Today; if (item.ShiftID != null) { Shift oshift = new ShiftService().Get((int)item.ShiftID); if (oshift != null) { new AttendanceProcess().CalculateLateAndDelay(item, oshift); new AttendanceProcess().CalculateOverTime(item, oshift); } } List items = new List(); items.Add(item); try { this._dailyAttnProcessService.ApproveAttnByLM(item); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } try { // send mail to Applier _dailyAttnProcessService.SendRegularizationApprovalMail(item, _emailSettings.Value); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, "Successfully Regularized. But could not send mail."); } return Ok(); } [HttpPost("updateActingResponsibilitySetupForApprove")] public ActionResult UpdateActingResponsibilitySetupForApprove( ActingResponsibilitySetup actingResponsibilitySetup) { if (actingResponsibilitySetup == null) { return StatusCode(StatusCodes.Status500InternalServerError, "No Data Found to save"); } ActingResponsibilitySetup dailyAttnProcess = _actingResponsibilitySetupService.Get(actingResponsibilitySetup.ID); if (dailyAttnProcess == null) { return StatusCode(StatusCodes.Status500InternalServerError, "No Previous Data Found to save"); } try { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); actingResponsibilitySetup.ModifiedBy = currentUser.EmployeeID; actingResponsibilitySetup.ModifiedDate = DateTime.Today; _actingResponsibilitySetupService.Save(actingResponsibilitySetup); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpGet("getLastProcessDateByEmpId/{empId}")] public ActionResult GetLastProcessDateByEmpId(int empId) { DateTime item; try { item = _dailyAttnProcessService.GetLastProcessDateByEmpId(empId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getAttnSubmittedDataByDateRange/{empId}/{fromDate}/{toDate}")] public ActionResult GetAttnSubmittedDataByDateRange(string empId, DateTime fromDate, DateTime toDate) { List items = new List(); try { items = _dailyAttnProcessService.GetAttnSubmittedData(empId, fromDate, toDate); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getAttnSubmittedData/{empId}/{isCurrentMonth}")] public ActionResult GetAttnSubmittedData(string empId, bool isCurrentMonth) { List items = new List(); try { items = _dailyAttnProcessService.GetAttnSubmittedData(empId, isCurrentMonth); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getAttnDataByWFStatus/{empId}/{status}")] public ActionResult GetAttnDataByWFStatus(string empId, EnumWFAttnStatus status) { List items = new List(); try { items = _dailyAttnProcessService.GetAttnDataByWFStatus(empId, status); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getAttnDataByWFStatusCount/{empId}/{status}")] public ActionResult GetAttnDataByWFStatusCount(string empId, EnumWFAttnStatus status) { int ans; try { ans = _dailyAttnProcessService.GetAttnDataByWFStatusCount(empId, status); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(ans); } [HttpGet("getDailyAttnProcessById/{id}")] public ActionResult GetDailyAttnProcessById(int id) { DailyAttnProcess item = new DailyAttnProcess(); try { item = _dailyAttnProcessService.Get(id); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getDailyAttnProcessByEmpId/{empId}/{attnDate}")] public ActionResult GetDailyAttnProcessByEmpId(int empId, DateTime attnDate) { DailyAttnProcess item = new DailyAttnProcess(); try { item = _dailyAttnProcessService.Get(empId, attnDate); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getDailyAttnProcessByWPG/{wpg}/{attnDate}")] public ActionResult GetDailyAttnProcessByWPG(EnumWorkPlanGroup wpg, DateTime attnDate) { List items = new List(); try { items = _dailyAttnProcessService.GetProcessByWPG(wpg, attnDate); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getDailyAttnProcessByAttnDate/{attnDate}")] public ActionResult GetDailyAttnProcessByAttnDate(DateTime attnDate) { List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { items = _dailyAttnProcessService.Get(attnDate, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getDailyAttnManualProcess/{attnDate}")] public ActionResult GetDailyAttnManualProcess(DateTime attnDate) { List items = new List(); try { items = _dailyAttnProcessService.GetManualProcess(attnDate); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } //internal static IDataReader GetTeamForAttenReguApprove(TransactionContext tc, int employeeid, EnumStatus enumStatus) //{ // return tc.ExecuteReader(@"SELECT DISTINCT e.EmployeeID, EmployeeNo, e.Name, e.categoryID, e.GradeID, // LocationID, d.name as DesignationName, g.DESCRIPTION GradeName, dept.DESCRIPTION DepartmentName From Employee e // left join designation d on d.DESIGNATIONID = e.DESIGNATIONID // LEFT JOIN DEPARTMENT dept ON dept.DEPARTMENTID = e.DEPARTMENTID // LEFT JOIN GRADES g ON g.GRADEID = e.GRADEID // LEFT JOIN DAILYATTNPROCESS dap ON dap.EMPLOYEEID = e.EMPLOYEEID // WHERE dap.WFStatus = 1 AND e.linemanagerid =%n and e.status = %n", employeeid, (int)enumStatus); //} [HttpGet("getDailyAttnProcessByEmpIdAndDateRange/{empId}/{sFromDate}/{sToDate}")] public ActionResult GetDailyAttnProcessByEmpIdAndDateRange(int empId, string sFromDate, string sToDate) { List attendanceRegularizationDTOs = new List(); List dailyAttnProcesses = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); if (empId == 0) { empId = (int)currentUser.EmployeeID; } try { DateTime fromDate = Convert.ToDateTime(sFromDate); DateTime toDate = Convert.ToDateTime(sToDate); dailyAttnProcesses = _dailyAttnProcessService.Get(empId, fromDate, toDate); attendanceRegularizationDTOs = AttendanceProcess.GetNotSubmittedAttnData(dailyAttnProcesses, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(attendanceRegularizationDTOs); } [HttpGet("getDailyAttnProcessByDateRangeEss/{empId}/{sFromDate}/{sToDate}")] public ActionResult GetDailyAttnProcessByDateRangeEss(int empId, string sFromDate, string sToDate) { List dailyAttnProcesses = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); if (empId == 0) { empId = (int)currentUser.EmployeeID; } try { DateTime fromDate = Convert.ToDateTime(sFromDate); DateTime toDate = Convert.ToDateTime(sToDate); dailyAttnProcesses = _dailyAttnProcessService.Get(empId, fromDate, toDate); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(dailyAttnProcesses); } [HttpGet("getRegularizableAttendance/{empId}/{sFromDate}/{sToDate}")] public ActionResult getRegularizableAttendance(int empId, string sFromDate, string sToDate) { List dailyAttnProcesses = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); if (empId == 0) { empId = (int)currentUser.EmployeeID; } try { DateTime fromDate = Convert.ToDateTime(sFromDate); DateTime toDate = Convert.ToDateTime(sToDate); dailyAttnProcesses = _dailyAttnProcessService.GetRegularizableAttn(empId, fromDate, toDate); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(dailyAttnProcesses); } [HttpGet("getDailyAttnProcessBysEmpIdAndDateRange/{empId}/{fromDate}/{toDate}")] public ActionResult GetDailyAttnProcessBysEmpIdAndDateRange(string empId, string fromDate, string toDate) { List items = new List(); DateTime dfromDate = GlobalFunctions.GetApiDefaultDateData(fromDate); DateTime dtoDate = GlobalFunctions.GetApiDefaultDateData(toDate); try { items = _dailyAttnProcessService.Get(Convert.ToInt32(empId), dfromDate, dtoDate); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getDailyAttnProcessByDateRange/{fromDate}/{toDate}")] public ActionResult GetDailyAttnProcessByDateRange(DateTime fromDate, DateTime toDate) { List items = new List(); try { items = _dailyAttnProcessService.Get(fromDate, toDate); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getDailyAttnProcessByAttnDateAndShiftId/{attnDate}/{shiftId}/{attnType}")] public ActionResult GetDailyAttnProcessByAttnDateAndShiftId(DateTime attnDate, int shiftId, EnumAttendanceType attnType) { List items = new List(); try { items = _dailyAttnProcessService.Get(attnDate, shiftId, attnType); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getDailyEmployeeAbsentById/{id}/{date}")] public ActionResult GetDailyEmployeeAbsentById(int id, DateTime date) { DailyAttnProcess item = new DailyAttnProcess(); try { item = _dailyAttnProcessService.GetDailyEmployeeAbsent(id, date); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getDailyAttnWhereOutTimeIsNull/{attnDate}/{shiftId}")] public ActionResult GetDailyAttnWhereOutTimeIsNull(DateTime attnDate, int shiftId) { List items = new List(); try { items = _dailyAttnProcessService.GetWhrOutTimeIsNull(attnDate, shiftId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getEmployeesFirstAttendances/{employeeIds}")] public ActionResult getEmployeesFirstAttendances(string employeeIds) { List items = new List(); try { items = _dailyAttnProcessService.GetEmployeesFirstAttendances(employeeIds); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getLastProcessDate")] public ActionResult GetLastProcessDate() { DateTime item = new DateTime(); try { item = _dailyAttnProcessService.GetLastProcessDate(); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet( "getDailyAttnProcessByEmpIdAndShiftIdAndDateRange/{empId}/{shiftId}/{fromDate}/{toDate}/{attendanceType}")] public ActionResult GetDailyAttnProcessByEmpIdAndShiftIdAndDateRange(int empId, int shiftId, DateTime fromDate, DateTime toDate, EnumAttendanceType attendanceType) { List items = new List(); try { items = _dailyAttnProcessService.Get(empId, shiftId, fromDate, toDate, attendanceType); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getDailyAttnProcessByAttnDateAndEmpIds/{attnDate}/{empIds}")] public ActionResult GetDailyAttnProcessByAttnDateAndEmpIds(DateTime attnDate, string empIds) { List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { items = _dailyAttnProcessService.Get(attnDate, empIds, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getAttnDataByWFStatusCountByDateRange/{fromDate}/{toDate}/{status}")] public ActionResult GetAttnDataByWFStatusCountByDateRange(DateTime fromDate, DateTime toDate, EnumWFAttnStatus status) { int ans; try { ans = _dailyAttnProcessService.GetAttnDataByWFStatusCount(fromDate, toDate, status); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(ans); } [HttpGet("getDailyAttnBySalaryMonth/{salaryMonth}")] public ActionResult GetDailyAttnBySalaryMonth(DateTime salaryMonth) { List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { items = _dailyAttnProcessService.GetBySalaryMonth(salaryMonth, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getDailyAttnByStatusAndDateRange/{empId}/{fromDate}/{toDate}/{status}")] public ActionResult GetDailyAttnByStatusAndDateRange(int empId, DateTime fromDate, DateTime toDate, string status) { List items = new List(); try { items = _dailyAttnProcessService.GetByStatus(empId, fromDate, toDate, status); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getDailyAttnByStatusAndDateRangeAndsEmpId/{empId}/{fromDate}/{toDate}/{status}")] public ActionResult getDailyAttnByStatusAndDateRangeAndsEmpId(string empId, DateTime fromDate, DateTime toDate, EnumClaimWFStatus status) { List items = new List(); try { items = _dailyAttnProcessService.Get(empId, fromDate, toDate, status); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getDailyAttnLastProcessDate")] public ActionResult GetDailyAttnLastProcessDate() { DateTime item = new DateTime(); try { item = _dailyAttnProcessService.GetLastProcessDate(); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet("getDailyAttnManualProcessByAttnDate/{attnDate}")] public ActionResult GetDailyAttnManualProcessByAttnDate(DateTime attnDate) { List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { items = _dailyAttnProcessService.GetManualProcess(attnDate, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getAttnDataByWFStatusByProcessId/{dailyAttnProcessId}/{status}")] public ActionResult GetAttnDataByWFStatusByProcessId(int dailyAttnProcessId, EnumWFAttnStatus status) { DailyAttnProcess item = new DailyAttnProcess(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int payrollTypeId = currentUser.PayrollTypeID.GetValueOrDefault(); try { item = _dailyAttnProcessService.GetAttnDataByWFStatus(dailyAttnProcessId, status); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpPost] [Route("saveDailyAttnProcess")] public ActionResult SaveDailyAttnProcess(DailyAttnProcess item) { try { _dailyAttnProcessService.Save(new List() { item }, null); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("RejectAttnStatusByLM")] public ActionResult RejectAttnStatusByLM(DailyAttnProcess process) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); try { _dailyAttnProcessService.RejectAttnStatusByLM(process.EmployeeID, process.AttnDate, (int)currentUser.EmployeeID, process.LMRemarks, process.Comments); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } try { // send mail to Applier _dailyAttnProcessService.SendRegularizationApprovalMail(process, _emailSettings.Value); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, "Successfully Regularized. But could not send mail."); } return Ok(true); } [HttpPost] [Route("save")] public ActionResult Save(List item) { try { _dailyAttnProcessService.Save(item, null); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("saverawdata")] public ActionResult SaveRawData(List items) { try { //List items = new List(); //items = JsonConvert.DeserializeObject>(data.dataList.ToString()); _attnRawDataService.SaveAuto(items); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpGet("getrawdata/{fromDate}/{toDate}/{empIDs}")] public ActionResult GetHolidaysByDateRange(DateTime fromDate, DateTime toDate, string empIDs) { empIDs = (empIDs == "null" || empIDs == "undefined") ? null : empIDs; DateTime end = toDate.AddDays(1).AddSeconds(-1); List employees = new EmployeeService().GetAllEmps(); List items = new List(); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); try { items = _attnRawDataService.Get(fromDate, end, empIDs, (int)currentUser.PayrollTypeID); foreach (var temp in items) { temp.EmployeeName = employees?.Where(x => x.ID == temp.EmployeeID)?.FirstOrDefault()?.Name; temp.EmployeeNo = employees?.Where(x => x.ID == temp.EmployeeID)?.FirstOrDefault()?.EmployeeNo; } } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } //[HttpPost] //[Route("saveDailyAttnProcessListWithCounterClock")] //public ActionResult SaveDailyAttnProcessListWithCounterClock(List items) //{ // try // { // _dailyAttnProcessService.Save(items, true); // } // catch (Exception e) // { // return StatusCode(StatusCodes.Status500InternalServerError, e.Message); // } // return Ok(); //} [HttpPost] [Route("UpdateManualEntry")] public ActionResult UpdateManualEntry(List items) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List oshifts = new ShiftService().Get(string.Empty, string.Empty, EnumStatus.Regardless, (int)currentUser.PayrollTypeID); foreach (DailyAttnProcess item in items) { item.AttnDate = new DateTime(item.AttnDate.Year, item.AttnDate.Month, item.AttnDate.Day); if (item.InTime != null) item.InTime = new DateTime(item.AttnDate.Year, item.AttnDate.Month, item.AttnDate.Day, ((DateTime)item.InTime).Hour, ((DateTime)item.InTime).Minute, 0); if (item.OutTime != null) { item.OutTime = new DateTime(item.AttnDate.Year, item.AttnDate.Month, item.AttnDate.Day, ((DateTime)item.OutTime).Hour, ((DateTime)item.OutTime).Minute, 0); } if (item.InTime != null && item.OutTime != null) { if (((DateTime)item.OutTime).Hour < ((DateTime)item.InTime).Hour) { DateTime tempDate = (DateTime)item.AttnDate.AddDays(1); item.OutTime = new DateTime(tempDate.Year, tempDate.Month, tempDate.Day, ((DateTime)item.OutTime).Hour, ((DateTime)item.OutTime).Minute, 0); } } if (item.IsNew == true) { item.CreatedBy = currentUser.UserID; item.CreatedDate = DateTime.Today; } else { item.ModifiedBy = currentUser.UserID; item.ModifiedDate = DateTime.Today; } new AttendanceProcess().CalculateLateAndDelay(item, oshifts); //if(item.ShiftID !=null) //{ var sft = oshifts.FirstOrDefault(x => x.ID == item.ShiftID); // if(sft!=null) // { // new AttendanceProcess().CalulateOverTimeForMobileAttendance(item, sft); // } //} } try { _dailyAttnProcessService.ManualEditSave(items, (int)currentUser.PayrollTypeID, currentUser.UserID, null); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("saveDailyAttnProcessList")] public ActionResult SaveDailyAttnProcessList(List items) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List oshifts = new ShiftService().Get(string.Empty, string.Empty, EnumStatus.Regardless, (int)currentUser.PayrollTypeID); foreach (DailyAttnProcess item in items) { item.AttnDate = new DateTime(item.AttnDate.Year, item.AttnDate.Month, item.AttnDate.Day); if (item.IsNew == true) { item.CreatedBy = currentUser.UserID; item.CreatedDate = DateTime.Today; } else { item.ModifiedBy = currentUser.UserID; item.ModifiedDate = DateTime.Today; } new AttendanceProcess().CalculateLateAndDelay(item, oshifts); } try { _dailyAttnProcessService.Save(items, null); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("saveDailyAttnProcessListAndAttnMonthlyBenefits")] public ActionResult SaveDailyAttnProcessListAndAttnMonthlyBenefits(List items) { try { _dailyAttnProcessService.Save(items, null); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("deleteDailyAttnProcessById")] public ActionResult DeleteDailyAttnProcessById(DailyAttnProcess item) { List attnMonthlyBenefits = new List(); bool IscounterClock = true; try { _dailyAttnProcessService.Delete(item.ID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } //[HttpPost] //[Route("updateLeave")] //public ActionResult UpdateLeave(DailyAttnProcess item) //{ // try // { // _dailyAttnProcessService.UpdateLeave(item.EmployeeID, 1, DateTime.Now, 1); // } // catch (Exception e) // { // return StatusCode(StatusCodes.Status500InternalServerError, e.Message); // } // return Ok(); //} //[HttpPost] //[Route("saveForBridgeHoliday")] //public ActionResult SaveForBridgeHoliday(List items) //{ // List oLeaveEntrys = new List(); // try // { // _dailyAttnProcessService.SaveForBridgeHoliday(items, oLeaveEntrys); // } // catch (Exception e) // { // return StatusCode(StatusCodes.Status500InternalServerError, e.Message); // } // return Ok(); //} //[HttpPost] //[Route("saveAutoForLmApproved")] //public ActionResult SaveAutoForLmApproved(List items) //{ // List oAtnMonthlyBenifits = new List(); // AttnProcessRunSummary oAttnRunSummary = new AttnProcessRunSummary(); // try // { // _dailyAttnProcessService.SaveAutoForLmApproved(items, oAtnMonthlyBenifits, oAttnRunSummary); // } // catch (Exception e) // { // return StatusCode(StatusCodes.Status500InternalServerError, e.Message); // } // return Ok(); //} [HttpPost] //[Route("saveAutoDailyAttnProcess")] //public ActionResult SaveAutoDailyAttnProcess(List items) //{ // List oAtnMonthlyBenifits = new List(); // AttnProcessRunSummary oAttnRunSummary = new AttnProcessRunSummary(); // try // { // _dailyAttnProcessService.SaveAuto(items, oAtnMonthlyBenifits, oAttnRunSummary); // } // catch (Exception e) // { // return StatusCode(StatusCodes.Status500InternalServerError, e.Message); // } // return Ok(); //} [HttpPost] [Route("dailyAttnProcessManual")] public ActionResult dailyAttnProcessManual(dynamic processItems) { DateTime fromDate = DateTime.Today; DateTime toDate = DateTime.Today; bool withoutEmployee = true; List emps = null; List employees = null; int empid; int count = 0; try { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(processItems)); foreach (var item in items) { fromDate = (DateTime)item["fromDate"].ToObject(); toDate = (DateTime)item["toDate"].ToObject(); withoutEmployee = (bool)item["isWithEmployee"].ToObject(); if (withoutEmployee == true) break; if (withoutEmployee == false && emps == null) emps = new List(); empid = (int)item["employeeID"].ToObject(); SearchEmployee emp = new SearchEmployee(); emp.EmployeeID = empid; emps.Add(emp); } if (withoutEmployee == false) { employees = new EmployeeService().GetByEmpIDs(SearchEmployee.getEmpID(emps), (int)currentUser.PayrollTypeID); count++; } for (DateTime attDate = fromDate; attDate <= toDate; attDate = attDate.AddDays(1)) { new AttendanceProcess().Process(new DateTime(attDate.Year, attDate.Month, attDate.Day), EnumProcessMode.Manual, (int)currentUser.PayrollTypeID, currentUser.UserID, employees); } } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("BenifitProcess")] public ActionResult BenifitProcess(dynamic processItems) { List items = new List(); try { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); items = new AttendanceProcess().BenifitProcess(currentUser.UserID, (int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } // EmployeeOutsideDuty [HttpGet("getAllEmployeeOutsideDuties")] public ActionResult GetAllEmployeeOutsideDuties() { List items = new List(); try { items = _employeeOutsideDutyService.Get(); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet("getOutsideDutiesByEmployeeId/{empId}")] public ActionResult getOutsideDutiesByEmployeeId(int empId) { List items = new List(); try { items = _employeeOutsideDutyService.GetByEmpIdDetails(empId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpPost] [Route("saveEmployeeOutsideDuty")] public ActionResult SaveEmployeeOutsideDuty(EmployeeOutsideDuty item) { int ans = 0; try { ans = _employeeOutsideDutyService.Save(item); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(ans); } [HttpPost] [Route("SaveMontlhyWorkPlan")] public ActionResult SaveMontlhyWorkPlan(List items) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); items.ForEach(x => { x.payrollTypeID = (int)currentUser.PayrollTypeID; x.CreatedBy = currentUser.UserID; x.CreatedDate = DateTime.Today; }); try { this._monthyWorkPlan.Save(items); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(true); } [HttpGet] [Route("DeleteMontlhyWorkPlan/{FromDate}/{ToDate}")] public ActionResult DeleteMontlhyWorkPlan(DateTime fromDate, DateTime toDate) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); try { this._monthyWorkPlan.Delete(fromDate, toDate, (int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(true); } [HttpGet] [Route("DeleteOnwardMonthyworkPlan/{fromMonth}")] public ActionResult DeleteOnwardMonthyworkPlan(DateTime fromMonth) { fromMonth = GlobalFunctions.FirstDateOfMonth(fromMonth); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); try { this._monthyWorkPlan.DeleteOnward(fromMonth, (int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(true); } [HttpGet] [Route("GetWorkPlan/{MonthDate}")] public ActionResult GetWorkPlan(DateTime MonthDate) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List items = null; try { items = this._monthyWorkPlan.Get(MonthDate, (int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(true); } [HttpGet] [Route("GetWorkPlanByDate/{FromDate}/{toDate}")] public ActionResult GetWorkPlanByDate(DateTime MonthDate, DateTime toDate) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List items = null; try { items = this._monthyWorkPlan.Get(MonthDate, toDate, (int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(true); } [HttpGet] [Route("RefreshMonthlyWorkplan/{monthDate}")] public ActionResult RefreshMonthlyWorkplan(string monthDate) { DateTime fdate = GlobalFunctions.FirstDateOfMonth(GlobalFunctions.GetApiDefaultDateData(monthDate)); DateTime tdate = GlobalFunctions.LastDateOfMonth(fdate); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List items = null; try { items = this._monthyWorkPlan.RefreshMonthlyWorkplan(fdate, tdate, (int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpPost] [Route("UpdateMonthlyWorkplan")] public ActionResult UpdateMonthlyWorkplan(MonthlyWorkPlan mworkPlan) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); mworkPlan.payrollTypeID = (int)currentUser.PayrollTypeID; List items = null; try { this._monthyWorkPlan.UpdateShiftAndRoster(mworkPlan); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpPost] [Route("GetRosterTable")] public ActionResult GetRosterTable(List monthyPlans) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List groups = this._workPlanGroupService.Get(EnumStatus.Regardless, (int)currentUser.PayrollTypeID, string.Empty, null); List oshifts = this._shiftService.Get(string.Empty, string.Empty, EnumStatus.Regardless, (int)currentUser.PayrollTypeID); DataTable table = new DataTable("RosterCanlender"); table.Columns.Add("Date"); groups.ForEach(x => { table.Columns.Add(new DataColumn(x.Name)); }); try { DateTime fromDAte = monthyPlans[0].WorkDate; DateTime toDAte = monthyPlans[monthyPlans.Count - 1].WorkDate; for (DateTime dDate = fromDAte; dDate <= toDAte; dDate = dDate.AddDays(1)) { DataRow row = table.NewRow(); row["Date"] = dDate.ToString("dd MMM"); table.Rows.Add(row); } int nindex = -1; for (DateTime dDate = fromDAte; dDate <= toDAte; dDate = dDate.AddDays(1)) { nindex = nindex + 1; foreach (WorkPlanGroup wg in groups) { MonthlyWorkPlan oplan = monthyPlans.FirstOrDefault(x => x.WorkDate == dDate && x.WorkPlanGroupID == wg.ID); if (oplan != null) { if (oplan.Type == EnumWorkPlanDayType.WorkingDay) { Shift oshift = oshifts.FirstOrDefault(x => x.ID == oplan.ShiftID); if (oshift != null) { table.Rows[nindex][wg.Name] = oshift.ShortName; } } else if (oplan.Type == EnumWorkPlanDayType.WeeklyHoliday) { table.Rows[nindex][wg.Name] = "WH"; } else { table.Rows[nindex][wg.Name] = "NH"; } } } } } catch (Exception ex) { return StatusCode(StatusCodes.Status500InternalServerError, ex.Message); } return Ok(table); } [HttpGet] [Route("GetLastSavedWorkDate")] public ActionResult GetLastSavedWorkDate() { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); DateTime ddate; try { ddate = this._monthyWorkPlan.GetLastSavedWorkDate((int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } string sdata = ""; if (ddate != DateTime.MinValue) sdata = ddate.ToString("dd MMM yyyy"); return Ok(sdata); } [HttpPost] [Route("deleteEmployeeOutsideDuty")] public ActionResult DeleteEmployeeOutsideDuty(EmployeeOutsideDuty item) { try { _employeeOutsideDutyService.Delete(item.ID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpGet] [Route("getActingResponsiblityByEmpID/{fromDate}/{ToDate}/{empid}")] public ActionResult getActingResponsiblityByEmpID(string fromDate, string ToDate, int empid) { DateTime fdate = GlobalFunctions.GetApiDefaultDateData(fromDate); DateTime tdate = GlobalFunctions.GetApiDefaultDateData(ToDate); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List items = null; try { items = this._actingResponsiblity.GetByEmpID(fdate, tdate, empid); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet] [Route("getActingResponsiblityByEmpIDAndStatus/{fromDate}/{ToDate}/{empid}/{wfStatus}")] public ActionResult GetActingResponsiblityByEmpIDAndStatus(string fromDate, string ToDate, int empid, int wfStatus) { DateTime fdate = GlobalFunctions.GetApiDefaultDateData(fromDate); DateTime tdate = GlobalFunctions.GetApiDefaultDateData(ToDate); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List items = null; try { items = this._actingResponsiblity.Get(fdate, tdate, empid, (EnumClaimWFStatus)wfStatus); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet] [Route("getActingResponsiblityForApprove/{fromDate}/{ToDate}/{wfStatus}")] public ActionResult GetActingResponsiblityForApprove(string fromDate, string ToDate, int wfStatus) { DateTime fdate = GlobalFunctions.GetApiDefaultDateData(fromDate); DateTime tdate = GlobalFunctions.GetApiDefaultDateData(ToDate); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List items = null; try { items = this._actingResponsiblity.GetForApprove(fdate, tdate, (int)currentUser.EmployeeID, (EnumClaimWFStatus)wfStatus); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet] [Route("getActingResponsiblity/{fromDate}/{ToDate}")] public ActionResult getActingResponsiblityByEmpID(string fromDate, string ToDate) { DateTime fdate = GlobalFunctions.GetApiDefaultDateData(fromDate); DateTime tdate = GlobalFunctions.GetApiDefaultDateData(ToDate); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List items = null; try { items = this._actingResponsiblity.Get(fdate, tdate, (int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpGet] [Route("getOnWardActingResponsiblity/{fromDate}/{empid}")] public ActionResult getOnWardActingResponsiblity(string monthFromDate, int empid) { DateTime fdate = GlobalFunctions.GetApiDefaultDateData(monthFromDate); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List items = null; try { items = this._actingResponsiblity.GetOnwardByEmpID(fdate, empid); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(items); } [HttpPost] [Route("SaveActingResponsiblities")] public ActionResult SaveActingResponsiblities(List items) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); items.ForEach(item => { if (item.IsNew == true) { item.CreatedBy = currentUser.UserID; item.CreatedDate = DateTime.Today; item.payrollTypeID = (int)currentUser.PayrollTypeID; item.SalaryMonth = DateTime.Today; } else { item.ModifiedBy = currentUser.UserID; item.ModifiedDate = DateTime.Today; } }); try { this._actingResponsiblity.Save(items); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(true); } [HttpPost] [Route("DeleteActingResponsiblity")] public ActionResult DeleteActingResponsiblity(ActingResponsibilitySetup item) { try { this._actingResponsiblity.Delete(item.ID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("GetEmployeeRoster")] public dynamic GetEmployeeRoster(dynamic paramData) { var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(paramData)); string empids = ""; DateTime fromDate = DateTime.Today; DateTime toDate = DateTime.Today; bool isteam = false; foreach (var item in items) { int empID = (int)item["employeeID"].ToObject(); if (empID != 0) empids = empids + empID.ToString() + ","; fromDate = (DateTime)item["fromDate"].ToObject(); toDate = (DateTime)item["toDate"].ToObject(); isteam = (bool)item["isTeam"].ToObject(); } if (empids.Length > 0) { empids = empids.Substring(0, empids.Length - 1); } DateTime DFromDate = new DateTime(fromDate.Year, fromDate.Month, fromDate.Day); DateTime DToDate = new DateTime(toDate.Year, toDate.Month, toDate.Day); ; CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); List team = new List(); if (isteam == true) team = new SearchEmployeeService().GetTeam((int)currentUser.EmployeeID, EnumStatus.Active); List mWorkPlans = this._monthyWorkPlan.Get(DFromDate, DToDate, (int)currentUser.PayrollTypeID); if (mWorkPlans == null || mWorkPlans.Count == 0) { return StatusCode(StatusCodes.Status500InternalServerError, "There is no roster calender, please contact admin user for create roster calender."); // throw new Exception("There is no roster calender, please contact admin user for create roster calender."); } List groups = this._workPlanGroupService.Get(EnumStatus.Active, (int)currentUser.PayrollTypeID, string.Empty, null); string temp = SearchEmployee.getEmpID(team); if (empids.Length == 0) empids = temp; else { team.InsertRange(team.Count == 0 ? 0 : team.Count - 1, new SearchEmployeeService().GetByEmpIDIn(empids)); } if (temp.Length > 0) empids = empids + "," + temp; if (empids.Length == 0) { return StatusCode(StatusCodes.Status500InternalServerError, "employee not found for the roster creation."); } List empworkPlans = this._employeeWorkPlanSetupService.getEmployeeWorkPlan(empids); List actingSetup = this._actingResponsiblity.GetByStatus(DFromDate, DToDate, (int)currentUser.PayrollTypeID, EnumClaimWFStatus.LMApproved); List oshifts = this._shiftService.Get(string.Empty, string.Empty, EnumStatus.Regardless, (int)currentUser.PayrollTypeID); DataTable table = new DataTable("RosterCanlender"); table.Columns.Add("EmployeeID"); table.Columns.Add("Name"); for (DateTime i = DFromDate; i <= DToDate; i = i.AddDays(1)) { table.Columns.Add(new DataColumn(i.ToString("dd-MMM"))); } try { foreach (SearchEmployee item in team) { DataRow row = table.NewRow(); row["EmployeeID"] = item.EmployeeNo; row["Name"] = item.Name; table.Rows.Add(row); for (DateTime i = DFromDate; i <= DToDate; i = i.AddDays(1)) { EmployeeWorkPlanSetup empworkPlan = empworkPlans.FirstOrDefault(x => x.EmployeeID == item.EmployeeID); if (empworkPlan != null) { MonthlyWorkPlan mplan = mWorkPlans.FirstOrDefault(x => x.WorkDate == i && x.WorkPlanGroupID == empworkPlan.WorkPlanGroupID); if (mplan != null) { var exception = actingSetup.FirstOrDefault(x => x.EmployeeID == item.EmployeeID && x.FromDate <= i && i <= x.ToDate); if (exception != null) { if (exception.IsHoliday) { row[i.ToString("dd-MMM")] = "WH"; } else if (exception.ShiftID != null) { Shift shift = oshifts.FirstOrDefault(x => x.ID == exception.ShiftID); if (shift != null) row[i.ToString("dd-MMM")] = "EX-" + shift.ShortName; } else { MonthlyWorkPlan emplan = mWorkPlans.FirstOrDefault(x => x.WorkDate == i && x.WorkPlanGroupID == exception.WorkPlanGroupID); Shift shift = oshifts.FirstOrDefault(x => x.ID == emplan.ShiftID); if (shift != null) row[i.ToString("dd-MMM")] = shift.ShortName; } } else { if (mplan.Type == EnumWorkPlanDayType.WorkingDay) { Shift oshift = oshifts.FirstOrDefault(x => x.ID == mplan.ShiftID); if (oshift != null) { row[i.ToString("dd-MMM")] = oshift.ShortName; } } else if (mplan.Type == EnumWorkPlanDayType.WeeklyHoliday) { row[i.ToString("dd-MMM")] = "WH"; } else { row[i.ToString("dd-MMM")] = "NH"; } } } } } } } catch (Exception ex) { return StatusCode(StatusCodes.Status500InternalServerError, ex.Message); } return Ok(table); } #region My Team [HttpGet] [Route("getAttendanceDashboard")] public ActionResult GetAttendanceDashboard() { DataTable dt = null; CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int id = currentUser.EmployeeID.GetValueOrDefault(); Employee oEmp = _employeeService.Get(id); try { dt = _dailyAttnProcessService.GetAttendanceDashboard(oEmp); } catch (Exception ex) { return StatusCode(StatusCodes.Status500InternalServerError, ex.Message); } return Ok(dt); } [HttpGet] [Route("getTopEmpAbsentData")] public ActionResult getTopEmpAbsentData() { DataTable dt = null; CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int id = currentUser.EmployeeID.GetValueOrDefault(); Employee oEmp = _employeeService.Get(id); try { dt = _dailyAttnProcessService.getTopEmpAbsentData(oEmp, EnumAttendanceType.Absent); } catch (Exception ex) { return StatusCode(StatusCodes.Status500InternalServerError, ex.Message); } return Ok(dt); } [HttpGet] [Route("getcorehrAbsentData")] public ActionResult getcorehrAbsentData() { DataTable dt = null; CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int id = currentUser.EmployeeID.GetValueOrDefault(); Employee oEmp = _employeeService.Get(id); try { dt = _dailyAttnProcessService.getcorehrAbsentData(oEmp, EnumAttendanceType.Absent); } catch (Exception ex) { return StatusCode(StatusCodes.Status500InternalServerError, ex.Message); } return Ok(dt); } #endregion [HttpGet("getAccessCard/{id}")] public ActionResult getAccessCard(int id) { AccessCard item = new AccessCard(); try { item = this._accessCardService.Get(id); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpPost] [Route("assignCard")] public ActionResult assignCard(List cardOperations) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); AccessCard item = new AccessCard(); cardOperations.ForEach(x => { x.CreatedBy = currentUser.UserID; x.CreatedDate = DateTime.Today; }); try { this._cCardOperationService.Save(cardOperations, (int)currentUser.PayrollTypeID); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpPost] [Route("lostCardFromEmployee")] public ActionResult lostCardFromEmployee(CardOperation cardOperations) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); AccessCard item = new AccessCard(); try { item = new AccessCardService().Get(cardOperations.CardNumber); cardOperations.CardID = item.ID; this._cCardOperationService.Save(cardOperations); new CardOperationService().DetachCardFromEmployee(cardOperations.EmployeeID, cardOperations.CardNumber, cardOperations.AssignDate, EnumCardStatus.Lost); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(item); } [HttpGet] [Route("getCardInformation/{enumCardStatus}")] public ActionResult getCardInformation(int enumCardStatus) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); DataTable table = null; try { table = new AccessCardService().getCardInformation(enumCardStatus); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(table); } [HttpPost] [Route("foundCard")] public ActionResult foundCard(dynamic data) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); CardOperation item = new CardOperation(); var ac = new AccessCardService(); var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(data)); string cardNumber = (string)items["cardNumber"].ToObject(); TransactionContext tc = null; try { item = new CardOperationService().Get(cardNumber); if (item.EmployeeID != 0) { throw new Exception("Card is already astteched to another employee"); } else { item.Status = EnumCardStatus.Free; tc = TransactionContext.Begin(true); ac.UpdateStatus(tc, item.CardID, item.Status, (int)currentUser.PayrollTypeID); } } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("detachCardInfoFromEmployee")] public ActionResult detachCardInfoFromEmployee(CardOperation cardOperations) { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); TransactionContext tc = null; var ac = new AccessCardService(); cardOperations.CreatedBy = currentUser.UserID; cardOperations.CreatedDate = DateTime.Today; try { AccessCard accessCard = new AccessCardService().Get(cardOperations.CardNumber); cardOperations.CardID = accessCard.ID; if (cardOperations.CardID != 0) cardOperations.AccessCard = new AccessCardService().Get(cardOperations.CardID); tc = TransactionContext.Begin(true); new CardOperationService().DetachCardFromEmployee(cardOperations.EmployeeID, cardOperations.CardNumber, cardOperations.AssignDate, EnumCardStatus.Detached); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(); } [HttpPost] [Route("getAttandanceDashboardData")] public ActionResult getAttandanceDashboardData(dynamic param) { DateTime fromDate = DateTime.Today; DateTime toDate = DateTime.Today; int shiftId = 0; bool isLate = false; bool isEarly = false; string departmentIds = string.Empty; string employeeIds = string.Empty; bool appliedForRegularize = false; int status = 0; string otHourType = string.Empty; int otHour = 0; bool isCalledFromEss = false; string lineManager = string.Empty; string statusText = string.Empty; DataTable dt = new DataTable(); try { CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); int CurrentUserId = (int)currentUser.EmployeeID; int payrollTypeId = (int)currentUser.PayrollTypeID; var items = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(param)); fromDate = (DateTime)items["fromDate"].ToObject(); toDate = (DateTime)items["toDate"].ToObject(); shiftId = (int)items["shiftId"].ToObject(); departmentIds = (string)items["departmentIds"].ToObject(); lineManager = (string)items["lineManager"].ToObject(); employeeIds = (string)items["employeeIds"].ToObject(); statusText = (string)items["statusText"].ToObject(); appliedForRegularize = (bool)items["appliedForRegularize"].ToObject(); status = (int)items["status"].ToObject(); otHourType = (string)items["otHourType"].ToObject(); otHour = (int)items["otHour"].ToObject(); isCalledFromEss = (bool)items["isCalledFromEss"].ToObject(); dt = new DailyAttnProcessService().GetAttandanceDashboardData(fromDate, toDate, shiftId, departmentIds, employeeIds, appliedForRegularize, status, otHourType, otHour, CurrentUserId, isCalledFromEss, lineManager, statusText, payrollTypeId); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); } return Ok(dt); } } }