Example #1
0
        AnonymousContact IAnonymousUsersCommand.CreateContact(AnonymousUser user, ContactDetails contactDetails)
        {
            // Look for an existing contact.

            var contact = _repository.GetContact(user, contactDetails);

            if (contact != null)
            {
                return(contact);
            }

            // Create a new contact.

            user.Prepare();
            user.Validate();

            contact = new AnonymousContact
            {
                EmailAddress = contactDetails.EmailAddress,
                FirstName    = contactDetails.FirstName,
                LastName     = contactDetails.LastName
            };
            contact.Prepare();
            contact.Validate();
            _repository.CreateContact(user, contact);

            return(contact);
        }
Example #2
0
        /// <summary>
        /// Get current contact info
        /// </summary>
        /// <returns></returns>
        public static ContactCookieModel GetCurrentContact()
        {
            var currentContact = StateManager.GetCookie <ContactCookieModel>(EzCMSContants.CurrentContactInformation);

            /*
             * This is the first time user come to site and has no cookie. We will
             *  - Create new cookie
             *  - Create an anonymous contact for user
             */
            if (currentContact == null)
            {
                //Create new anonymous contact
                var annonymousContactRepository = HostContainer.GetInstance <IRepository <AnonymousContact> >();
                var annonymousContact           = new AnonymousContact
                {
                    CookieKey = PasswordUtilities.GenerateUniqueKey(),
                    IpAddress = HttpContext.Current.GetUserAgentInformationFromRequest().IpAddress
                };
                annonymousContactRepository.Insert(annonymousContact);

                //Setup contact
                currentContact = new ContactCookieModel
                {
                    AnonymousContactId = annonymousContact.Id,
                    CookieKey          = annonymousContact.CookieKey,
                    IpAddress          = annonymousContact.IpAddress
                };

                //Set current contact to cookie
                StateManager.SetCookie(EzCMSContants.CurrentContactInformation, currentContact, DateTime.UtcNow.AddYears(1));
            }

            return(currentContact);
        }
Example #3
0
        private JobAdQuestionsModel GetJobAdQuestionsModel(Guid jobAdId, Guid applicationId)
        {
            var member = CurrentMember;
            var jobAd  = _memberJobAdViewsQuery.GetJobAdView(jobAdId);

            if (jobAd == null)
            {
                return(null);
            }

            var application = _memberApplicationsQuery.GetInternalApplication(applicationId);

            if (application == null)
            {
                return(null);
            }

            // Get the user who is doing the applying.

            AnonymousContact anonymousContact = null;

            if (member == null)
            {
                if (CurrentAnonymousUser != null)
                {
                    anonymousContact = GetAnonymousContact(applicationId);
                    if (anonymousContact == null)
                    {
                        return(null);
                    }
                }
            }
            else
            {
                if (member.Id != application.ApplicantId)
                {
                    return(null);
                }
            }

            if (member == null && anonymousContact == null)
            {
                return(null);
            }

            return(new JobAdQuestionsModel
            {
                JobAd = jobAd,
                Application = application,
                Member = member,
                AnonymousContact = anonymousContact,
            });
        }
Example #4
0
 public ContactCookieModel(AnonymousContact anonymousContact)
     : this()
 {
     Email              = anonymousContact.Email;
     FirstName          = anonymousContact.FirstName;
     LastName           = anonymousContact.LastName;
     Phone              = anonymousContact.Phone;
     Address            = anonymousContact.Address;
     ContactId          = anonymousContact.ContactId;
     AnonymousContactId = anonymousContact.Id;
     CookieKey          = anonymousContact.CookieKey;
     IpAddress          = anonymousContact.IpAddress;
 }
Example #5
0
 public static AnonymousContactEntity Map(this AnonymousContact contact, Guid userId)
 {
     return(new AnonymousContactEntity
     {
         userId = userId,
         ContactDetailEntity = new ContactDetailEntity
         {
             id = contact.Id,
             email = contact.EmailAddress,
             firstName = contact.FirstName,
             lastName = contact.LastName
         }
     });
 }
Example #6
0
        void IAnonymousRepository.CreateContact(IAnonymousUser user, AnonymousContact contact)
        {
            using (var dc = CreateContext())
            {
                // Ensure there is a user.

                var userEntity = GetAnonymousUserEntity(dc, user.Id);
                if (userEntity == null)
                {
                    dc.AnonymousUserEntities.InsertOnSubmit(user.Map());
                }

                dc.AnonymousContactEntities.InsertOnSubmit(contact.Map(user.Id));
                dc.SubmitChanges();
            }
        }
Example #7
0
        Guid IInternalApplicationsCommand.Submit(AnonymousContact contact, IJobAd jobAd, Guid fileReferenceId)
        {
            // Check that the job hasn't already been applied for.

            if (_jobAdApplicationSubmissionsQuery.HasSubmittedApplication(contact.Id, jobAd.Id))
            {
                throw new AlreadyAppliedException();
            }

            // Create the application.

            var application = new InternalApplication
            {
                PositionId   = jobAd.Id,
                ApplicantId  = contact.Id,
                ResumeFileId = fileReferenceId,
            };

            // Submit it.

            _jobAdApplicationSubmissionsCommand.CreateApplication(jobAd, application);
            _jobAdApplicationSubmissionsCommand.SubmitApplication(jobAd, application);
            return(application.Id);
        }
Example #8
0
 public static string GetDefaultCoverLetter(this JobAdView jobAd, AnonymousContact contact)
 {
     return(GetDefaultCoverLetter(jobAd.Title, jobAd.Integration.ExternalReferenceId, contact.FullName, contact.EmailAddress, null));
 }
Example #9
0
 internal ResponseModel Delete(AnonymousContact anonymousContactt)
 {
     return(_anonymousContactRepository.Delete(anonymousContactt));
 }
Example #10
0
 internal ResponseModel Insert(AnonymousContact anonymousContactt)
 {
     return(_anonymousContactRepository.Insert(anonymousContactt));
 }
Example #11
0
        /// <summary>
        /// Save contact info
        /// </summary>
        /// <param name="model"></param>
        public static void SetCurrentContact(ContactCookieModel model)
        {
            var annonymousContactRepository = HostContainer.GetInstance <IRepository <AnonymousContact> >();

            var anonymousContact = annonymousContactRepository.FetchFirst(c => c.CookieKey.Equals(model.CookieKey));

            /*
             * If we cannot find the anonymous contact of user, maybe because the data is removed, user log to different account or user remove cookie. We will
             *  - Create an anonymous contact for user
             */
            if (anonymousContact == null)
            {
                anonymousContact = new AnonymousContact
                {
                    ContactId = model.ContactId,
                    CookieKey = model.CookieKey,
                    Email     = model.Email,
                    FirstName = model.FirstName,
                    LastName  = model.LastName,
                    Phone     = model.Phone,
                    Address   = model.Address,
                    IpAddress = HttpContext.Current.GetUserAgentInformationFromRequest().IpAddress
                };

                annonymousContactRepository.Insert(anonymousContact);

                model = new ContactCookieModel(anonymousContact);
            }
            else
            {
                if (model.ContactId.HasValue)
                {
                    /*
                     * If the contact ID in database has no model, then maybe user just have an account so we will link the anonymous contact to current contact
                     */
                    if (!anonymousContact.ContactId.HasValue)
                    {
                        anonymousContact.ContactId = model.ContactId;
                        anonymousContact.Email     = model.Email;
                        anonymousContact.FirstName = model.FirstName;
                        anonymousContact.LastName  = model.LastName;
                        anonymousContact.Phone     = model.Phone;
                        anonymousContact.IpAddress = model.IpAddress;
                        anonymousContact.Address   = model.Address;

                        annonymousContactRepository.Update(anonymousContact);

                        model = new ContactCookieModel(anonymousContact);
                    }
                    else
                    {
                        /*
                         * If the contact ID in database has model but different with current contact id, then user may change the account. So we will
                         *  - Create new anonymous for current user
                         */
                        if (model.ContactId.Value != anonymousContact.ContactId.Value)
                        {
                            anonymousContact = new AnonymousContact
                            {
                                ContactId = model.ContactId,
                                CookieKey = PasswordUtilities.GenerateUniqueKey(),
                                Email     = model.Email,
                                FirstName = model.FirstName,
                                LastName  = model.LastName,
                                Phone     = model.Phone,
                                Address   = model.Address,
                                IpAddress = HttpContext.Current.GetUserAgentInformationFromRequest().IpAddress
                            };

                            annonymousContactRepository.Insert(anonymousContact);

                            model = new ContactCookieModel(anonymousContact);
                        }
                        else
                        {
                            /*
                             * If the contact ID in database has model and equal with current contact id, then we will check if there are any contact information updates or not.
                             *  - If yes, then update anonymous contact information
                             */
                            if (!anonymousContact.FirstName.AreEqual(model.FirstName) ||
                                !anonymousContact.LastName.AreEqual(model.LastName) ||
                                !anonymousContact.Email.AreEqual(model.Email) ||
                                !anonymousContact.Phone.AreEqual(model.Phone) ||
                                !anonymousContact.IpAddress.AreEqual(model.IpAddress) ||
                                !anonymousContact.Address.AreEqual(model.Address))
                            {
                                anonymousContact.FirstName = model.FirstName;
                                anonymousContact.LastName  = model.LastName;
                                anonymousContact.Email     = model.Email;
                                anonymousContact.Phone     = model.Phone;
                                anonymousContact.IpAddress = model.IpAddress;
                                anonymousContact.Address   = model.Address;

                                annonymousContactRepository.Update(anonymousContact);

                                model = new ContactCookieModel(anonymousContact);
                            }
                        }
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(anonymousContact.FirstName) &&
                        !string.IsNullOrEmpty(anonymousContact.LastName) &&
                        (!string.IsNullOrEmpty(anonymousContact.Email) || !string.IsNullOrEmpty(anonymousContact.Phone)))
                    {
                        var contactService = HostContainer.GetInstance <IContactService>();
                        var contact        = contactService.CreateContactIfNotExists(new Contact
                        {
                            FirstName            = anonymousContact.FirstName,
                            LastName             = anonymousContact.LastName,
                            Email                = anonymousContact.Email,
                            PreferredPhoneNumber = anonymousContact.Phone,
                            AddressLine1         = anonymousContact.Address,
                        });

                        anonymousContact.ContactId = contact.Id;

                        model = new ContactCookieModel(anonymousContact);
                    }
                }
            }

            StateManager.SetCookie(EzCMSContants.CurrentContactInformation, model, DateTime.UtcNow.AddYears(1));
        }
Example #12
0
 protected void AssertJobG8Request(AnonymousContact contact, JobAd jobAd, InternalApplication application, FileReference fileReference)
 {
     AssertJobG8Request(contact, jobAd, application, fileReference.FileName, GetResumeValue(fileReference));
 }