/// <summary> /// This function returns the contact for a given Id /// </summary> /// <param name="contactId"></param> /// <returns></returns> public Candidate GetCandidate(int contactId) { var context = new dbDataContext(); // Set up the query to retrieve contact var contact = context.tbl_Candidates.FirstOrDefault(t => t.CandidateId == contactId); if (contact == null) return null; var foundContact = new Candidate { CandidateId = contact.CandidateId, ClientId = contact.ClientId, Forename = contact.Forename, Surname = contact.Surname, Title = contact.Title, JobTitle = contact.JobTitle, Employer = contact.Employer, Addresses = new Addresses().GetContactAddresses(contact.CandidateId), Email = contact.Email, Password = contact.Password, WorkPhone = contact.WorkPhone, HomePhone = contact.HomePhone, Rating = contact.Rating, Mobile = contact.Mobile, Website = contact.Website, VacancyType = contact.VacancyType, Hours = contact.Hours, Newsletter = contact.NewsLetter, MinSalary = contact.MinSalary, MaxSalary = contact.MaxSalary, PersonalSummary = contact.PersonalSummary, Facebook = contact.Facebook, Twitter = contact.Twitter, Google = contact.Google, LinkedIn = contact.LinkedIn, SourceOther = contact.SourceOther, Source = new Sources().GetSource(contact.SourceId), DoNotEmail = contact.DoNotEmail, Deleted = contact.Deleted, CreatedDate = contact.CreatedDate, CreatedBy = contact.CreatedBy, LastUpdatedDate = contact.LastUpdatedDate, LastUpdatedBy = contact.LastUpdatedBy, RefId = contact.RefId, SalaryText = GetSalaryText(contact.MinSalary, contact.MaxSalary), SectorIds = string.Join(",", (from sec in context.tbl_CandidateSectors where sec.CandidateId == contactId select sec.SectorId).ToArray()), Location = new Locations().GetLocation(contact.LocationId), Sectors = new Sectors().GetSectorsForContact(contact.CandidateId).ToList() }; return foundContact; }
/// <summary> /// Do not replace the body if the object is null /// </summary> /// <param name="rawBody"></param> /// <param name="contactId"></param> /// <param name="jobId"></param> /// <param name="userId"></param> /// <param name="consultantid"></param> /// <param name="clientId"></param> /// <param name="candidate"></param> /// <param name="job"></param> /// <param name="cUser"></param> /// <param name="consultant"></param> /// <param name="client"></param> /// <param name="intRequestId"></param> /// <param name="timeSlotId"></param> /// <returns></returns> public string GetOriginalBodyForPreview(string rawBody, int contactId = 0, int jobId = 0, int userId = 0, int consultantid = 0, int clientId = 0, Candidate candidate = null, Job job = null, User cUser = null, User consultant = null, Client client = null, int intRequestId = 0, int timeSlotId = 0) { // get contact by id if (contactId > 0) candidate = new Contacts().GetCandidate(contactId); //retrieve objects if null and have an id passed if (job == null && jobId > 0) job = new Jobs().GetJob(jobId); if (cUser == null && userId > 0) cUser = new Users().GetUser(userId); if (consultant == null && consultantid > 0) consultant = new Users().GetUser(consultantid); if (client == null && clientId > 0) client = new Clients().GetClient(clientId); InterviewRequest intRequest = null; if (intRequestId > 0) { intRequest = new Interviews().GetInterviewRequest(intRequestId); } TimeSlot timeSlot = null; if (timeSlotId > 0) { timeSlot = new Interviews().GetTimeSlot(timeSlotId); } //Contact if (candidate != null) { var pwdlink = "http://www.resonatesearch.co.uk/reset-password.aspx?token=" + candidate.RefId; rawBody = rawBody.Replace("#ContactTitle#", candidate.Title); rawBody = rawBody.Replace("#ContactForename#", candidate.Forename); rawBody = rawBody.Replace("#ContactSurname#", candidate.Surname); rawBody = rawBody.Replace("#ContactJobTitle#", candidate.JobTitle); rawBody = rawBody.Replace("#ContactEmployer#", candidate.Employer); rawBody = rawBody.Replace("#ContactEmail#", candidate.Email); rawBody = rawBody.Replace("#ContactPassword#", candidate.Password); if (string.IsNullOrEmpty(candidate.Password)) rawBody = rawBody.Replace("#PasswordResetLink#", "If you wish to create a password for your account on Resonate Search please click link below:<br/><a href='" + pwdlink + "'>" + pwdlink + "</a><br/>"); else rawBody = rawBody.Replace("#PasswordResetLink#", ""); } //Job if (job != null) { rawBody = rawBody.Replace("#VacancyTitle#", job.JobTitle); rawBody = rawBody.Replace("#VacancyRef#", job.Ref); rawBody = rawBody.Replace("#VacancyBenefits#", job.Benefits); rawBody = rawBody.Replace("#VacancyOverview#", job.Overview); } // User if (cUser != null) { rawBody = rawBody.Replace("#UserForename#", cUser.Forename); rawBody = rawBody.Replace("#UserSurname#", cUser.Surname); rawBody = rawBody.Replace("#UserEmail#", cUser.Email); rawBody = rawBody.Replace("#UserMobile#", cUser.Mobile); rawBody = rawBody.Replace("#UserPassword#", cUser.Password); rawBody = rawBody.Replace("#UserJobTitle#", cUser.JobTitle); } // Consultant if (consultant != null) { rawBody = rawBody.Replace("#ConsultantForename#", consultant.Forename); rawBody = rawBody.Replace("#ConsultantSurname#", consultant.Surname); rawBody = rawBody.Replace("#ConsultantEmail#", consultant.Email); rawBody = rawBody.Replace("#ConsultantMobile#", consultant.Mobile); rawBody = rawBody.Replace("#ConsultantJobTitle#", consultant.Password); } // Client if (client != null) { rawBody = rawBody.Replace("#ClientName#", client.ClientName); rawBody = rawBody.Replace("#ClientEmail#", client.Email); } // Interview Request if (intRequest != null) { var requestLink = "http://www.resonatesearch.co.uk/interview/interview-request.aspx?ref=" + intRequest.RefId; rawBody = rawBody.Replace("#InterviewRequestLink#", requestLink); } // Time Slot if (timeSlot != null) { rawBody = rawBody.Replace("#InterviewDate#", "Interview Date: <b>" + Convert.ToDateTime(timeSlot.SlotDate).ToString("dd MMM, yyyy") + " - " + timeSlot.SlotTime + "</b>"); rawBody = rawBody.Replace("#Duration#", "Duration:<b> " + GetDurationText(timeSlot.Duration) + "</b>"); rawBody = rawBody.Replace("#InterviewLocation#", timeSlot.Location != null ? GetInterviewLocation(timeSlot) : ""); rawBody = rawBody.Replace("#Interviewers#", timeSlot.Interviewers != null && timeSlot.Interviewers.Any() ? GetInterviewers(timeSlot) : ""); } return rawBody; }
private int AddContact(tbl_JobApplicationByEmail application) { var contact = new Candidate { CandidateId = -1, ClientUserId = 0, Forename = application.Forename, Surname = application.Surname, ClientId = 0, JobTitle = application.ApplicantJobtitle, Employer = application.ApplicantEmployer, Email = application.Email, Mobile = application.Phone, Source = new Source { SourceId = 4 }, SourceOther = application.JobBoard, PersonalSummary = application.Comments, LastUpdatedBy = LoginUser.GetLoggedInUserId() }; //save return new Contacts().AddUpdateCandidate(contact); }
/// <summary> /// This function add/update the contact /// </summary> /// <param name="candidateDetails"></param> /// <returns></returns> // ReSharper disable once FunctionComplexityOverflow public int AddUpdateCandidate(Candidate candidateDetails) { var context = new dbDataContext(); var isAdd = false; // Create or retrieve the contact var candidate = context.tbl_Candidates.FirstOrDefault(t => t.CandidateId == candidateDetails.CandidateId) ?? new tbl_Candidate(); // Assign contact values candidate.ClientId = candidateDetails.ClientId; candidate.Title = candidateDetails.Title; candidate.Forename = candidateDetails.Forename; candidate.Surname = candidateDetails.Surname; candidate.JobTitle = candidateDetails.JobTitle; candidate.Employer = candidateDetails.Employer; candidate.LocationId = candidateDetails.Location == null ? 0 : candidateDetails.Location.LocationId; candidate.Email = candidateDetails.Email; //contact.Password = contactDetails.Password; candidate.Mobile = candidateDetails.Mobile; candidate.WorkPhone = candidateDetails.WorkPhone; candidate.HomePhone = candidateDetails.HomePhone; candidate.Website = candidateDetails.Website; candidate.MinSalary = candidateDetails.MinSalary; candidate.MaxSalary = candidateDetails.MaxSalary; candidate.Rating = candidateDetails.Rating; candidate.VacancyType = candidateDetails.VacancyType; candidate.Hours = candidateDetails.Hours; candidate.PersonalSummary = candidateDetails.PersonalSummary; candidate.LinkedIn = candidateDetails.LinkedIn; candidate.Facebook = candidateDetails.Facebook; candidate.Twitter = candidateDetails.Twitter; candidate.Google = candidateDetails.Google; candidate.SourceId = candidateDetails.Source != null ? candidateDetails.Source.SourceId : 0; candidate.SourceOther = candidateDetails.SourceOther; candidate.NewsLetter = candidateDetails.Newsletter; candidate.DoNotEmail = candidateDetails.DoNotEmail; candidate.LastUpdatedDate = DateTime.Now; candidate.LastUpdatedBy = candidateDetails.LastUpdatedBy; try { // Add/Update candidate if (candidate.CandidateId <= 0) { isAdd = true; candidate.Password = null; candidate.RefId = Guid.NewGuid().ToString(); candidate.CreatedDate = DateTime.Now; candidate.CreatedBy = candidateDetails.LastUpdatedBy; context.tbl_Candidates.InsertOnSubmit(candidate); } context.SubmitChanges(); } catch (Exception) { return -1; } if (candidate.CandidateId > 0) { // save addresses if (candidateDetails.Addresses != null) { foreach (var address in candidateDetails.Addresses) { address.RefId = candidate.CandidateId; address.RefType = "Contact"; new Addresses().AddAddress(address); } } // Contact Sectors context.tbl_CandidateSectors.DeleteAllOnSubmit(context.tbl_CandidateSectors.Where(t => t.CandidateId == candidate.CandidateId)); context.SubmitChanges(); if (candidateDetails.SectorIds != null) { foreach (var secId in candidateDetails.SectorIds.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)) { context.tbl_CandidateSectors.InsertOnSubmit(new tbl_CandidateSector { CandidateId = candidate.CandidateId, SectorId = int.Parse(secId) }); } context.SubmitChanges(); } // Contact Qualifications if (candidateDetails.QualificationIds != null) { var quals = candidateDetails.QualificationIds.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(qualId => new Qualification { QualificationId = int.Parse(qualId) }).ToList(); new Qualifications().AddQualificationsForContact(candidate.CandidateId, quals); } // Contact Skills if (candidateDetails.SkillIds != null) { var skills = candidateDetails.SkillIds.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(skillId => new Skill { SkillId = int.Parse(skillId) }).ToList(); new Skills().AddSkillsForContact(candidate.CandidateId, skills); } //Add History new Histories().AddHistory(new History { RefId = candidate.CandidateId, RefType = "Candidate", ClientUserId = candidateDetails.LastUpdatedBy, TypeId = isAdd ? 1 : 2, SubRefType = candidateDetails.ClientUserId > 0 ? "ClientUser" : "Candidate", SubRefId = candidateDetails.ClientUserId > 0 ? candidateDetails.ClientUserId : candidate.CandidateId }); if (isAdd) { // TODO - Send Notification Email } return candidate.CandidateId; } return -1; }
/// <summary> /// Get contact last updated date /// </summary> /// <param name="candidateId"></param> /// <param name="candidate"></param> /// <returns></returns> public ActionDate GetContactLastUpdatedDate(int candidateId, Candidate candidate = null) { ActionDate action; var dbContext = new dbDataContext(); if (candidate == null) { var tblCandidate = dbContext.tbl_Candidates.FirstOrDefault(t => t.CandidateId == candidateId); if (tblCandidate != null) { action = new ActionDate { Date = tblCandidate.LastUpdatedDate.ToString("dd/MM/yyyy"), UserId = tblCandidate.LastUpdatedBy }; } else return null; } else { action = new ActionDate { Date = candidate.LastUpdatedDate.ToString("dd/MM/yyyy"), UserId = candidate.LastUpdatedBy }; } var user = dbContext.tbl_Users.FirstOrDefault(t => t.UserId == action.UserId); if (user != null) action.Username = user.Forename + " " + user.Surname; return action; }