示例#1
0
        public async Task TaskCompletion(Guid taskId, bool isDone)
        {
            DAL.Models.Entities.Task task = await _uow.GetRepository <DAL.Models.Entities.Task>().GetByIdAsync(taskId);

            task.IsDone = isDone;

            _uow.GetRepository <DAL.Models.Entities.Task>().Update(task);

            await _uow.SaveChangesAsync();
        }
示例#2
0
        public async Task UpdateAsync(TaskEditionServiceModel entity)
        {
            DAL.Models.Entities.Task task = _mapper
                                            .Map <TaskEditionServiceModel, DAL.Models.Entities.Task>(entity);
            _uow.GetRepository <DAL.Models.Entities.Task>().Update(task);

            await _uow.SaveChangesAsync();

            await _schedulerService.RescheduleTaskById(entity.Id);
        }
示例#3
0
        public async Task RemoveAsync(TaskServiceModel entity)
        {
            DAL.Models.Entities.Task task = await _uow.GetRepository <DAL.Models.Entities.Task>()
                                            .GetFirstOrDefaultAsync(
                predicate: t => t.Id == entity.Id,
                disableTracking: false);

            _uow.GetRepository <DAL.Models.Entities.Task>().Remove(task);

            await _uow.SaveChangesAsync();
        }
示例#4
0
        /*public async Task SendNotificationAsync(INotificable notificableEnity, NotificationType type)
         * {
         *  /*User user = await _uow.GetRepository<User>().GetFirstOrDefaultAsync(
         *      predicate: u => u.Id == userId,
         *      include: users => users.Include(u => u.PushSubscriptions));
         *
         *  await _emailSender.SendEmailAsync()#1#
         *
         *  throw new NotImplementedException();
         * }*/
        public async Task SendTaskNotificationAsync(Guid taskId, NotificationType type)
        {
            DAL.Models.Entities.Task task = await _uow.GetRepository <DAL.Models.Entities.Task>().GetFirstOrDefaultAsync(
                predicate: t => t.Id == taskId);

            Calendar calendar = await _uow.GetRepository <Calendar>().GetFirstOrDefaultAsync(
                predicate: c => c.Id == task.CalendarId,
                include: calendars => calendars
                .Include(c => c.User)
                .ThenInclude(u => u.PushSubscriptions)
                .Include(c => c.CalendarUsers)
                .ThenInclude(cu => cu.User));

            List <User> usersForNotify = calendar.CalendarUsers.Select(cu => cu.User).ToList();

            usersForNotify.Add(calendar.User);

            IEnumerable <string> emails = usersForNotify.Select(u => u.Email)
                                          .ToList();

            IEnumerable <string> deviceTokens = usersForNotify
                                                .Where(u => u.PushSubscriptions != null)
                                                .SelectMany(u => u.PushSubscriptions)
                                                .Select(p => p.DeviceToken)
                                                .ToList();

            switch (type)
            {
            case NotificationType.Start:
            {
                var pushNotificationServiceModel = new PushNotificationServiceModel
                {
                    Title   = task.Title,
                    Message = "Time to start doing task",
                    Url     = "" //url to page with details
                };

                PushNotification.Models.Notification pushNotification = _mapper
                                                                        .Map <PushNotificationServiceModel,
                                                                              PushNotification.Models.Notification>(pushNotificationServiceModel);

                await _pushNotificationSender.SendPushNotificationAsync(deviceTokens, pushNotification);

                var emailMessage = new Message(emails, task.Title,
                                               "Time to start doing task\n" +
                                               "Description: " + task.Description +
                                               "\nStart at: " + task.StartTime.ToLocalTime());

                await _emailSender.SendEmailAsync(emailMessage);

                break;
            }
            }
        }
示例#5
0
        public async Task RemoveAsync(Guid id)
        {
            DAL.Models.Entities.Task task = await _uow.GetRepository <DAL.Models.Entities.Task>()
                                            .GetByIdAsync(id);

            TaskServiceModel taskServiceModel = _mapper
                                                .Map <DAL.Models.Entities.Task, TaskServiceModel>(task);

            await _schedulerService.UnscheduleTaskById(id);

            await RemoveAsync(taskServiceModel);
        }
示例#6
0
        public async Task <TaskServiceModel> GetByIdAsync(Guid id)
        {
            DAL.Models.Entities.Task task = await _uow.GetRepository <DAL.Models.Entities.Task>()
                                            .GetFirstOrDefaultAsync(
                predicate: t => t.Id == id,
                include: query => query
                .Include(t => t.Calendar));

            TaskServiceModel taskServiceModel = _mapper.Map <DAL.Models.Entities.Task, TaskServiceModel>(task);

            return(taskServiceModel);
        }
示例#7
0
        public async Task <TaskServiceModel> AddAsync(TaskCreationServiceModel entity)
        {
            DAL.Models.Entities.Task task = _mapper.Map <TaskCreationServiceModel, DAL.Models.Entities.Task>(entity);

            await _uow.GetRepository <DAL.Models.Entities.Task>().AddAsync(task);

            await _uow.SaveChangesAsync();

            await _schedulerService.ScheduleTaskById(task.Id);

            TaskServiceModel taskServiceModel = _mapper.Map <DAL.Models.Entities.Task, TaskServiceModel>(task);

            return(taskServiceModel);
        }