示例#1
0
        public async Task <ICollection <Event> > RegisterCandidateUpdate(Candidate newCandidate, int userId)
        {
            return(await Task.Run
                   (
                       async() =>
            {
                var oldCandidate = await Task.Run(() => candidateRepository.Read(newCandidate.Id));

                var eventsList = new List <Event>();

                if (!comparer.IsEqual(oldCandidate.CandidatePrimarySkill, newCandidate.CandidatePrimarySkill))
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = stringifier.GetStr(newCandidate.CandidatePrimarySkill),

                        OldValue = stringifier.GetStr(oldCandidate.CandidatePrimarySkill),

                        Property = "primary skill",

                        User = userId
                    });
                }

                foreach (var oldSkill in oldCandidate.CandidateSecondarySkills)
                {
                    var changed = true;

                    foreach (var newSkill in newCandidate.CandidateSecondarySkills)
                    {
                        if (comparer.IsEqual(oldSkill, newSkill))
                        {
                            changed = false;

                            break;
                        }
                    }

                    if (changed)
                    {
                        eventsList.Add(new Event
                        {
                            Candidate = oldCandidate.Id,

                            Date = DateTime.UtcNow,

                            Event1 = EventIds.Candidate,

                            EventType = EventTypes.Edit,

                            OldValue = stringifier.GetStr(oldSkill),

                            Property = "secondary skill",

                            User = userId
                        });
                    }
                }

                foreach (var newSkill in newCandidate.CandidateSecondarySkills)
                {
                    var added = true;

                    foreach (var oldSkill in oldCandidate.CandidateSecondarySkills)
                    {
                        if (comparer.IsEqual(oldSkill, newSkill))
                        {
                            added = false;

                            break;
                        }
                    }

                    if (added)
                    {
                        eventsList.Add(new Event
                        {
                            Candidate = oldCandidate.Id,

                            Date = DateTime.UtcNow,

                            Event1 = EventIds.Candidate,

                            EventType = EventTypes.Edit,

                            NewValue = stringifier.GetStr(newSkill),

                            Property = "secondary skill",

                            User = userId
                        });
                    }
                }

                if (oldCandidate.City != newCandidate.City)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.City.HasValue ? newCandidate.City.Value.ToString() : null,

                        OldValue = oldCandidate.City.HasValue ? oldCandidate.City.Value.ToString() : null,

                        Property = "city",

                        User = userId
                    });
                }

                if (!comparer.IsEqual(oldCandidate.Contact, newCandidate.Contact))
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = stringifier.GetStr(newCandidate.Contact),

                        OldValue = stringifier.GetStr(oldCandidate.Contact),

                        Property = "contacts",

                        User = userId
                    });
                }

                if (oldCandidate.CustomerInterviewDate != newCandidate.CustomerInterviewDate)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.CustomerInterviewDate.HasValue ? newCandidate.CustomerInterviewDate.Value.ToString() : null,

                        OldValue = oldCandidate.CustomerInterviewDate.HasValue ? oldCandidate.CustomerInterviewDate.Value.ToString() : null,

                        Property = "customer interview date",

                        User = userId
                    });
                }

                if (oldCandidate.CustomerInterviewStatus != newCandidate.CustomerInterviewStatus)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.CustomerInterviewStatus.HasValue ? newCandidate.CustomerInterviewStatus.Value.ToString() : null,

                        OldValue = oldCandidate.CustomerInterviewStatus.HasValue ? oldCandidate.CustomerInterviewStatus.Value.ToString() : null,

                        Property = "customer interview status",

                        User = userId
                    });
                }

                if (oldCandidate.DesiredSalary != newCandidate.DesiredSalary)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.DesiredSalary.HasValue ? newCandidate.DesiredSalary.Value.ToString() : null,

                        OldValue = oldCandidate.DesiredSalary.HasValue ? oldCandidate.DesiredSalary.Value.ToString() : null,

                        Property = "desired salary",

                        User = userId
                    });
                }

                if (oldCandidate.EngLevel != newCandidate.EngLevel)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.EngLevel.HasValue ? newCandidate.EngLevel.Value.ToString() : null,

                        OldValue = oldCandidate.EngLevel.HasValue ? oldCandidate.EngLevel.Value.ToString() : null,

                        Property = "english level",

                        User = userId
                    });
                }

                if (string.Compare(oldCandidate.FirstNameEng, newCandidate.FirstNameEng, StringComparison.Ordinal) != 0)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.FirstNameEng,

                        OldValue = oldCandidate.FirstNameEng,

                        Property = "first name english",

                        User = userId
                    });
                }

                if (string.Compare(oldCandidate.FirstNameRus, newCandidate.FirstNameRus, StringComparison.Ordinal) != 0)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.FirstNameRus,

                        OldValue = oldCandidate.FirstNameRus,

                        Property = "first name russiasn",

                        User = userId
                    });
                }

                if (string.Compare(oldCandidate.LastNameEng, newCandidate.LastNameEng, StringComparison.Ordinal) != 0)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.LastNameEng,

                        OldValue = oldCandidate.LastNameEng,

                        Property = "last name english",

                        User = userId
                    });
                }

                if (string.Compare(oldCandidate.LastNameRus, newCandidate.LastNameRus, StringComparison.Ordinal) != 0)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.LastNameRus,

                        OldValue = oldCandidate.LastNameRus,

                        Property = "last name russsian",

                        User = userId
                    });
                }

                if (string.Compare(oldCandidate.Picture, newCandidate.Picture, StringComparison.Ordinal) != 0)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.Picture,

                        OldValue = oldCandidate.Picture,

                        Property = "picture",

                        User = userId
                    });
                }

                if (oldCandidate.PSExperience != newCandidate.PSExperience)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.PSExperience.HasValue ? newCandidate.PSExperience.Value.ToString() : null,

                        OldValue = oldCandidate.PSExperience.HasValue ? oldCandidate.PSExperience.Value.ToString() : null,

                        Property = "primary skill experience",

                        User = userId
                    });
                }

                if (string.Compare(oldCandidate.Resume, newCandidate.Resume, StringComparison.Ordinal) != 0)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.Resume,

                        OldValue = oldCandidate.Resume,

                        Property = "resume",

                        User = userId
                    });
                }

                if (oldCandidate.Status != newCandidate.Status)
                {
                    eventsList.Add(new Event
                    {
                        Candidate = oldCandidate.Id,

                        Date = DateTime.UtcNow,

                        Event1 = EventIds.Candidate,

                        EventType = EventTypes.Edit,

                        NewValue = newCandidate.Status.ToString(),

                        OldValue = oldCandidate.Status.ToString(),

                        Property = "status",

                        User = userId
                    });
                }

                var result = await Task.Run(() => eventRepository.AddRange(eventsList));

                return result.ToList();
            }
                   ));
        }