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; namespace HRM.DA { #region RecruitmentLetters Service public class RecruitmentLettersService : ServiceTemplate, IRecruitmentLettersService { public RecruitmentLettersService() { } #region MapObject For RecruitmentLetters private void MapObject(RecruitmentLetters oRecruitmentLetter, DataReader oReader) { base.SetObjectID(oRecruitmentLetter, (oReader.GetInt32("RecruitmentLetterID").Value)); oRecruitmentLetter.CandidateID = oReader.GetInt32("CandidateID", 0); oRecruitmentLetter.RequisitionID = oReader.GetInt32("RequisitionID").Value; oRecruitmentLetter.ProcessID = oReader.GetInt32("ProcessID", 0); oRecruitmentLetter.AcceptOfferBefore = oReader.GetDateTime("AcceptOfferBefore"); oRecruitmentLetter.IssueOfferDate = oReader.GetDateTime("IssueOfferDate"); oRecruitmentLetter.AcceptOfferDate = oReader.GetDateTime("AcceptOfferDate"); oRecruitmentLetter.RejectOfferDate = oReader.GetDateTime("RejectOfferDate"); oRecruitmentLetter.RejectOfferReason = oReader.GetString("RejectOfferReason"); oRecruitmentLetter.OfferLetterCount = oReader.GetInt32("OfferLetterCount", 0); oRecruitmentLetter.OfferCreatedBy = (oReader.GetInt32("OfferCreatedBy", 0)); oRecruitmentLetter.OfferCreatedDate = oReader.GetDateTime("OfferCreatedDate"); oRecruitmentLetter.GradeID = oReader.GetInt32("GradeID", 0); oRecruitmentLetter.BasicSalary = oReader.GetDouble("BasicSalary").GetValueOrDefault(0); oRecruitmentLetter.DepartmentID = (oReader.GetInt32("DepartmentID", 0)); oRecruitmentLetter.LocationID = (oReader.GetInt32("LocationID", 0)); //oRecruitmentLetter.EmployeeID = oReader.GetID("EmployeeID").IsUnassigned ? (0) : oReader.GetID("EmployeeID"); oRecruitmentLetter.NoticePeriod = oReader.GetInt32("NoticePeriod").GetValueOrDefault(0); oRecruitmentLetter.AppAcceptBefore = oReader.GetDateTime("AppAcceptBefore"); oRecruitmentLetter.IssueAppLetterDate = oReader.GetDateTime("IssueAppLetterDate"); oRecruitmentLetter.RejectAppLetterDate = oReader.GetDateTime("RejectAppLetterDate"); oRecruitmentLetter.RejectAppLetterReason = oReader.GetString("RejectAppLetterReason"); oRecruitmentLetter.CarEligible = oReader.GetBoolean("CarEligible").GetValueOrDefault(false); oRecruitmentLetter.AppCreatedBy = (oReader.GetInt32("AppCreatedBy", 0)); oRecruitmentLetter.AppCreatedDate = oReader.GetDateTime("AppCreatedDate").GetValueOrDefault(DateTime.MinValue); oRecruitmentLetter.AppLetterCount = oReader.GetInt32("AppLetterCount").GetValueOrDefault(0); oRecruitmentLetter.JoiningLetter = oReader.GetBoolean("JoiningLetter").GetValueOrDefault(false); oRecruitmentLetter.VendorMail = oReader.GetBoolean("VendorMail").GetValueOrDefault(false); oRecruitmentLetter.WelcomeMail = oReader.GetBoolean("WelcomeMail").GetValueOrDefault(false); oRecruitmentLetter.InductionRequest = oReader.GetBoolean("InductionRequest").GetValueOrDefault(); oRecruitmentLetter.Announcement = oReader.GetBoolean("Announcement").GetValueOrDefault(false); oRecruitmentLetter.OtherLetters = oReader.GetBoolean("OtherLetters").GetValueOrDefault(false); oRecruitmentLetter.OthersCount = oReader.GetInt32("OthersCount").GetValueOrDefault(0); oRecruitmentLetter.OtherCreatedBy = (oReader.GetInt32("OtherCreatedBy", 0)); oRecruitmentLetter.OtherCreateddate = oReader.GetDateTime("OtherCreateddate"); oRecruitmentLetter.JoiningBeforeDate = oReader.GetDateTime("JoiningBeforeDate"); oRecruitmentLetter.ConfirmJoiningDate = oReader.GetDateTime("ConfirmJoiningDate"); oRecruitmentLetter.CreatedBy = oReader.GetInt32("CreatedBy").Value; oRecruitmentLetter.CreatedDate = oReader.GetDateTime("CreationDate").Value; oRecruitmentLetter.ModifiedBy = oReader.GetInt32("ModifiedBy"); oRecruitmentLetter.ModifiedDate = oReader.GetDateTime("ModifiedDate"); this.SetObjectState(oRecruitmentLetter, Ease.Core.ObjectState.Saved); } protected override T CreateObject(DataReader oReader) { RecruitmentLetters oRecruitmentLetter = new RecruitmentLetters(); MapObject(oRecruitmentLetter, oReader); return oRecruitmentLetter as T; } protected RecruitmentLetters CreateObject(DataReader oReader) { RecruitmentLetters oRecruitmentLetter = new RecruitmentLetters(); MapObject(oRecruitmentLetter, oReader); return oRecruitmentLetter; } #endregion #region Service Implementation public RecruitmentLetters Get(int id) { RecruitmentLetters oRecruitmentLetter = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(RecruitmentLettersDA.Get(tc, id)); if (oreader.Read()) { oRecruitmentLetter = this.CreateObject(oreader); } oreader.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return oRecruitmentLetter; } public RecruitmentLetters GetByCandidateID(int nCandidateID) { RecruitmentLetters oRecruitmentLetter = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(RecruitmentLettersDA.GetByCandidateID(tc, nCandidateID)); if (oreader.Read()) { oRecruitmentLetter = this.CreateObject(oreader); } oreader.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return oRecruitmentLetter; } public List Get() { List recruitmentLetters = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(RecruitmentLettersDA.Get(tc)); recruitmentLetters = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return recruitmentLetters; } public List GetbyRequisitionID(int nProcessID) { List recruitmentLetters = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(RecruitmentLettersDA.GetbyRequisitionID(tc, nProcessID)); recruitmentLetters = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return recruitmentLetters; } public List GetByProcessID(int nProcessID) { List recruitmentLetters = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(RecruitmentLettersDA.GetByProcessID(tc, nProcessID)); recruitmentLetters = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return recruitmentLetters; } public int Save(RecruitmentLetters oRecruitmentLetters, int CheckValue) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); if (oRecruitmentLetters.IsNew) { int id = tc.GenerateID("RecruitmentLetters", "RecruitmentLetterID"); base.SetObjectID(oRecruitmentLetters, (id)); oRecruitmentLetters.OfferCreatedBy = oRecruitmentLetters.CreatedBy; oRecruitmentLetters.OfferCreatedDate = oRecruitmentLetters.CreatedDate; RecruitmentLettersDA.Insert(tc, oRecruitmentLetters); } else { if (CheckValue == 1) { oRecruitmentLetters.OfferCreatedBy = oRecruitmentLetters.CreatedBy; oRecruitmentLetters.OfferCreatedDate = oRecruitmentLetters.CreatedDate; } else if (CheckValue == 2) { oRecruitmentLetters.AppCreatedBy = oRecruitmentLetters.CreatedBy; oRecruitmentLetters.AppCreatedDate = oRecruitmentLetters.CreatedDate; } else { oRecruitmentLetters.OtherCreatedBy = oRecruitmentLetters.CreatedBy; oRecruitmentLetters.OtherCreateddate = oRecruitmentLetters.CreatedDate; } RecruitmentLettersDA.Update(tc, oRecruitmentLetters); } return oRecruitmentLetters.ID; } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } finally { tc.End(); } } public void Delete(int id) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); RecruitmentLettersDA.Delete(tc, id); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } finally { tc.End(); } } public void Save(List recruitmentLetters) { List saveditems = this.GetbyRequisitionID(recruitmentLetters[0].RequisitionID); TransactionContext tc = null; try { tc = TransactionContext.Begin(true); if (recruitmentLetters.Count > 0) { foreach (RecruitmentLetters letterItem in recruitmentLetters) { var saveItem = saveditems.Find(x => x.RequisitionID == letterItem.RequisitionID && x.CandidateID == letterItem.CandidateID); InternalRecruitment position = new InternalRecruitmentService().Get(recruitmentLetters[0].RequisitionID); DateTime? acceptDate = recruitmentLetters[0].AcceptOfferDate; DateTime? rejectDate = recruitmentLetters[0].RejectOfferDate; if(acceptDate != null) { var status = "Offer Letter Accepted." + "Position: " + position.PositionName + " Date: " + position.PositionDate.ToString("dd-MM-yyyy"); CVDA.UpdateCandidateLastStatus(status, letterItem.CandidateID, tc); } else if(rejectDate != null && saveItem.RejectOfferDate != null) { var status = "Offer Letter Rejected." + "Position: " + position.PositionName + " Date: " + position.PositionDate.ToString("dd-MM-yyyy"); CVDA.UpdateCandidateLastStatus(status, letterItem.CandidateID, tc); } if (saveItem!= null) { letterItem.ID = saveItem.ID; } if (letterItem.IsNew) { int id = tc.GenerateID("RecruitmentLetters", "RecruitmentLetterID"); base.SetObjectID(letterItem, (id)); RecruitmentLettersDA.Insert(tc, letterItem); } else { RecruitmentLettersDA.Update(tc, letterItem); } } } } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } finally { tc.End(); } } #endregion } #endregion }