using System; using System.Data; using Ease.Core.Model; using Ease.Core.DataAccess; using Ease.Core; using System.Collections.Generic; using Ease.Core.Utility; using HRM.BO; using System.IO; using System.Linq; using HRM.BO.Basic; using NPOI.SS.Formula.Functions; using Payroll.BO; using static HRM.BO.RecJobTracking; using Payroll.Service; namespace HRM.DA { public class RecJobTrackingService : ServiceTemplate, IRecJobTrackingService { #region CV Object Mapping private void MapCVObject(RecJobTracking obJobTracking, DataReader oReader) { this.SetObjectID(obJobTracking, oReader.GetInt32("RecJobTrackingID").Value); obJobTracking.RecruitementID = oReader.GetInt32("RecruitementID", true, 0); obJobTracking.RecruiterID = oReader.GetInt32("RecruiterID", true, 0); obJobTracking.OnBoardDays = oReader.GetInt32("OnBoardDays", true, 0); obJobTracking.OnBoardDate = (DateTime)oReader.GetDateTime("OnBoardDate").Value; obJobTracking.TrackingStartDate = (DateTime)oReader.GetDateTime("TrackingStartDate").Value; obJobTracking.JobPostingDate = (DateTime)oReader.GetDateTime("JobPostingDate").Value; obJobTracking.ActualJobPostingDate = oReader.GetDateTime("ActualJobPostingDate").HasValue ? (DateTime)oReader.GetDateTime("ActualJobPostingDate").Value : null; obJobTracking.CvCollectionDate = (DateTime)oReader.GetDateTime("CvCollectionDate").Value; obJobTracking.ActualCvCollectionDate = oReader.GetDateTime("ActualCvCollectionDate").HasValue ? (DateTime)oReader.GetDateTime("ActualCvCollectionDate").Value : null; obJobTracking.InterviewStartDate = (DateTime)oReader.GetDateTime("InterviewStartDate").Value; obJobTracking.ActualInterviewStartDate = oReader.GetDateTime("ActualInterviewStartDate").HasValue ? (DateTime)oReader.GetDateTime("ActualInterviewStartDate").Value : null; obJobTracking.InterviewEndDate = (DateTime)oReader.GetDateTime("InterviewEndDate").Value; obJobTracking.ActualInterviewEndDate = oReader.GetDateTime("ActualInterviewEndDate").HasValue ? (DateTime)oReader.GetDateTime("ActualInterviewEndDate").Value : null; obJobTracking.OfferLetterSendDate = (DateTime)oReader.GetDateTime("OfferLetterSendDate").Value; obJobTracking.ActualOfferLetterSendDate = oReader.GetDateTime("ActualOfferLetterSendDate").HasValue ? (DateTime)oReader.GetDateTime("ActualOfferLetterSendDate").Value : null; obJobTracking.JoiningDate = (DateTime)oReader.GetDateTime("JoiningDate").Value; obJobTracking.ActualJoiningDate = oReader.GetDateTime("ActualJoiningDate").HasValue ? (DateTime)oReader.GetDateTime("ActualJoiningDate").Value : null; if (oReader.GetDateTime("CreatedDate") == null) { obJobTracking.CreatedDate = DateTime.MinValue; } else { obJobTracking.CreatedDate = oReader.GetDateTime("CreatedDate").Value; } if (oReader.GetDateTime("ModifiedDate") == null) { obJobTracking.ModifiedDate = DateTime.MinValue; } else { obJobTracking.ModifiedDate = oReader.GetDateTime("ModifiedDate").Value; } this.SetObjectState(obJobTracking, ObjectState.Saved); } protected override T CreateObject(DataReader oReader) { RecJobTracking obJobTracking = new RecJobTracking(); MapCVObject(obJobTracking, oReader); return obJobTracking as T; } #endregion #region Service Implementation #region Insert(CV obCv) public void Save(RecJobTracking obJobTracking) { TransactionContext tc = null; int oID = 0; try { tc = TransactionContext.Begin(true); if (obJobTracking.IsNew) { int id = tc.GenerateID("RecJobTracking", "RecJobTrackingID"); oID = (id); base.SetObjectID(obJobTracking, (id)); obJobTracking.ActualJobPostingDate = DateTime.Now; RecJobTrackingDA.Insert(obJobTracking, tc); RecJobTrackingDA.UpdateactualJobPosting(tc, oID); InternalRecruitmentDA.UpdateRequisitionStatus(tc, obJobTracking.RecruitementID, EnumOnBoradStatus.CVPosting); } else { RecJobTrackingDA.Update(obJobTracking, tc); } tc.End(); } catch (Exception ex) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(ex); throw new ServiceException(ex.Message, ex); #endregion } } #endregion #region Get() public List Get() { List allRecJobTracking = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(true); DataReader oreader = new DataReader(RecJobTrackingDA.Get(tc)); allRecJobTracking = this.CreateObjects(oreader); oreader.Close(); tc.End(); } catch (Exception ex) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(ex); throw new ServiceException(ex.Message, ex); #endregion } return allRecJobTracking; } #endregion #region Get(int cVID) public RecJobTracking Get(int ID) { RecJobTracking jobTracking = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(true); DataReader oreader = new DataReader(RecJobTrackingDA.GetByID(ID, tc)); if (oreader.Read()) { jobTracking = this.CreateObject(oreader); } oreader.Close(); tc.End(); } catch (Exception ex) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(ex); throw new ServiceException(ex.Message, ex); #endregion } return jobTracking; } public RecJobTracking GetByRecruitmentId(int ID) { RecJobTracking jobTracking = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(true); DataReader oreader = new DataReader(RecJobTrackingDA.GetByRecruimentId(ID, tc)); if (oreader.Read()) { jobTracking = this.CreateObject(oreader); } oreader.Close(); tc.End(); } catch (Exception ex) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(ex); throw new ServiceException(ex.Message, ex); #endregion } return jobTracking; } public RecJobTracking GetByRecruitmentId(TransactionContext tc, int ID) { RecJobTracking jobTracking = null; try { DataReader oreader = new DataReader(RecJobTrackingDA.GetByRecruimentId(ID, tc)); if (oreader.Read()) { jobTracking = this.CreateObject(oreader); } oreader.Close(); } catch (Exception ex) { #region Handle Exception ExceptionLog.Write(ex); throw new ServiceException(ex.Message, ex); #endregion } return jobTracking; } public void UpdateActualDate(int recruitmentId,DateTime? joiningDate) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); var recJobTracking = new RecJobTrackingService().GetByRecruitmentId(tc, recruitmentId); if (recJobTracking != null) { if (recJobTracking.ActualOfferLetterSendDate == null) { RecJobTrackingDA.UpdateActualOfferLetterSendDate(tc, recruitmentId); } if (recJobTracking.ActualJoiningDate == null && joiningDate != null) { RecJobTrackingDA.UpdateActualJoiningDate(tc, recruitmentId); } } tc.End(); } catch (Exception ex) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(ex); throw new ServiceException(ex.Message, ex); #endregion } } #endregion #endregion } }