/// <summary>
 /// Implementors can modify both the source and destination objects
 /// </summary>
 /// <param name="source">Source object</param>
 /// <param name="destination">Destination object</param>
 public void Process(ActivityTask source, ActivityTaskViewModel destination)
 {
     destination.DateDeadline    = source.DateDeadline.ToLocalTime();
     destination.DateCreated     = source.DateCreated.ToLocalTime();
     destination.DateEnd         = source.DateEnd.ToLocalTime();
     destination.ObserverUserIds =
         (source.ObserverUsers?.Where(it => it.User != null).Select(it => it.User.Id) ??
          Enumerable.Empty <long>()).ToArray();
     destination.OrganizationIds = (source.Organizations?.Select(it => it.OrganizationId) ??
                                    Enumerable.Empty <long>()).ToArray();
     destination.ContactIds = (source.Contacts?.Select(it => it.ContactId) ??
                               Enumerable.Empty <long>()).ToArray();
 }
Exemplo n.º 2
0
        /// <summary>
        /// Implementors can modify both the source and destination objects
        /// </summary>
        /// <param name="source">The model.</param>
        /// <param name="destination">The entity.</param>
        public void Process(ActivityTaskViewModel source, ActivityTask destination)
        {
            destination.DateDeadline = source.DateDeadline.ToUniversalTime();
            destination.DateEnd      = source.DateEnd.ToUniversalTime();

            var assignToId = source.AssignToId;

            destination.AssignTo = assignToId != null?this.repositoryUsers.FindById(assignToId.Value) : null;

            destination.Contacts =
                source.ContactIds?.Select(
                    contactId =>
                    this.context.ActivityTaskContacts.FirstOrDefault(
                        it =>
                        (it.ContactId == contactId) &&
                        (it.TaskId == destination.Id)) ??
                    new ActivityTaskContact()
            {
                TaskId    = destination.Id,
                Task      = destination,
                ContactId = contactId,
                Contact   = this.repositoryContacts.FindById(contactId)
            }).ToList();

            var createdById = source.CreatedById; //TODO: to be auto-filled

            destination.CreatedBy = createdById != null?this.repositoryUsers.FindById(createdById.Value) : null;

            var goalId = source.GoalId;

            destination.Goal = goalId != null?this.repositoryGoals.FindById(goalId.Value) : null;

            destination.ObserverUsers =
                source.ObserverUserIds?.Select(
                    userId =>
                    this.context.ActivityTaskObserverUsers.FirstOrDefault(
                        it =>
                        (it.UserId == userId) &&
                        (it.TaskId == destination.Id)) ??
                    new ActivityTaskObserverUser()
            {
                TaskId = destination.Id,
                Task   = destination,
                UserId = userId,
                User   = this.repositoryUsers.FindById(userId)
            }).ToList();

            var statusId = source.StatusId;

            destination.Status = statusId != null?this.repositoryStatuses.FindById(statusId.Value) : null;

            destination.Organizations = source.OrganizationIds?.Select(
                organizationId =>
                this.context.ActivityTaskOrganizations.FirstOrDefault(
                    it =>
                    (it.OrganizationId == organizationId) &&
                    (it.TaskId == destination.Id)) ??
                new ActivityTaskOrganization()
            {
                TaskId         = destination.Id,
                Task           = destination,
                OrganizationId = organizationId,
                Organization   = this.repositoryOrganizations.FindById(organizationId)
            }).ToList();
        }