Exemple #1
0
        private TaskModel Mapping(MentifiTask task, string baseUrl, SystemUser mentee, SystemUser mentor)
        {
            var status     = Enum.GetName(typeof(MentifiTaskStatus), task.Status);
            var priority   = Enum.GetName(typeof(MentifiTaskPriority), task.Priority);
            var assignedTo = task.AssignedToBusiness?.SystemUser.FirstOrDefault();

            return(new TaskModel
            {
                Id = task.MentifiTaskId,
                Subject = task.TaskSubject,
                Status = new LookupModel <int>(status, (int)task.Status),
                Priority = new LookupModel <int>(priority, (int)task.Priority),
                Mentor = mentor != null?mentor.ToProfileModel(baseUrl) : task.MentifiChannelTask?.Mentor?.SystemUser.SingleOrDefault()?.ToProfileModel(baseUrl),
                             Mentee = mentee != null?mentee.ToProfileModel(baseUrl) : task.MentifiChannelTask?.Mentee?.SystemUser.SingleOrDefault()?.ToProfileModel(baseUrl),
                                          AssignedTo = assignedTo?.ToProfileModel(baseUrl),
                                          DueDate = task.DueDate.ToUnixTime(),
                                          Sequence = task.Sequence,
            });
        }
Exemple #2
0
        public void Create(NewTaskModel model)
        {
            var taskOwner =
                _systemUserRepository.GetFirstOrDefault(predicate: a => a.SystemUserId == model.FromSystemUserId,
                                                        include: a => a.Include(b => b.Business).ThenInclude(c => c.BusinessToBusiness));

            var taskReceiver =
                _systemUserRepository.GetFirstOrDefault(predicate: a => a.SystemUserId == model.ToSystemUserId,
                                                        include: a => a.Include(b => b.Business));

            var assigneeSystemUser =
                model.AssignedToSystemUserId.HasValue
                    ? _systemUserRepository.GetFirstOrDefault(
                    predicate: a => a.SystemUserId == model.AssignedToSystemUserId,
                    include: a => a.Include(b => b.Business))
                    : null;

            ValidateAssigning(taskOwner, taskReceiver);

            var mentor       = taskOwner.Business.EduBusinessType == (int)EduBusinessType.Mentor ? taskOwner : taskReceiver;
            var mentee       = taskOwner.Business.EduBusinessType == (int)EduBusinessType.Mentee ? taskOwner : taskReceiver;
            var channelTask  = GetChannelTask(mentor.BusinessId, mentee.BusinessId);
            var lastSequence = channelTask != null
                ? _taskRepository.GetFirstOrDefault(predicate : a => a.MentifiTaskId == channelTask.MentifiChannelTaskId,
                                                    orderBy : a => a.OrderByDescending(b => b.Sequence))?.Sequence ?? 0
                : 0;

            var task = new MentifiTask()
            {
                CreatedOn            = DateTime.UtcNow,
                CreatedBy            = taskOwner.BusinessId,
                Status               = model.Status,
                Priority             = model.Priority,
                AssignedTo           = assigneeSystemUser?.BusinessId,
                DueDate              = model.DueDate.FromUnixTime(),
                TaskSubject          = model.Subject,
                Sequence             = lastSequence,
                MentifiChannelTaskId = channelTask?.MentifiChannelTaskId ?? 0
            };

            if (channelTask == null)
            {
                task.MentifiChannelTask = new MentifiChannelTask()
                {
                    MenteeId = mentee.BusinessId,
                    MentorId = mentor.BusinessId
                };
            }
            _taskRepository.Insert(task);

            CreateNotif(taskOwner, Constant.MentifiNotification.TASK_CREATED, taskReceiver.SystemUserId);

            if (model.AssignedToSystemUserId.HasValue && model.AssignedToSystemUserId > 0)
            {
                CreateNotif(taskOwner, Constant.MentifiNotification.TASK_ASSIGNED, model.AssignedToSystemUserId.Value);
            }

            if (model.Status == MentifiTaskStatus.Completed)
            {
                CreateNotif(taskOwner, Constant.MentifiNotification.TASK_COMPLETED, taskReceiver.SystemUserId);
            }

            _unitOfWork.SaveChanges();
        }