Beispiel #1
0
        public async Task <SingleResult <UserDto> > GetCurrentUser(CancellationToken cancellationToken)
        {
            Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            return(SingleResult.Create(DtoModelMapper.FromEntityQueryToDtoQuery((await UsersRepository.GetAllAsync(cancellationToken)))
                                       .Where(u => u.Id == userId)));
        }
Beispiel #2
0
        public virtual async Task <ToDoGroupDto> CreateToDoGroup(CreateToDoGroupArgs args, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(args.title))
            {
                throw new BadRequestException("TitleMayNotBeEmpty");
            }

            Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            ToDoGroup addedToDoGroup = await ToDoGroupsRepository.AddAsync(new ToDoGroup
            {
                Id          = Guid.NewGuid(),
                CreatedById = userId,
                CreatedOn   = DateTimeProvider.GetCurrentUtcDateTime(),
                ModifiedOn  = DateTimeProvider.GetCurrentUtcDateTime(),
                Title       = args.title,
                Options     = new List <ToDoGroupOptions>
                {
                    new ToDoGroupOptions
                    {
                        HideCompletedToDoItems = false,
                        SortedBy = SortBy.CreatedDate,
                        Id       = Guid.NewGuid(),
                        Theme    = "Green",
                        UserId   = userId
                    }
                }
            }, cancellationToken);

            return(await GetMyToDoGroups()
                   .FirstAsync(tdg => tdg.Id == addedToDoGroup.Id, cancellationToken));
        }
Beispiel #3
0
        public virtual async Task <IQueryable <UserSetting> > Get(CancellationToken cancellationToken)
        {
            string userId = UserInformationProvider.GetCurrentUserId() !;

            return((await UsersSettingsRepository
                    .GetAllAsync(cancellationToken).ConfigureAwait(false))
                   .Where(userSetting => userSetting.UserId == userId));
        }
Beispiel #4
0
        public virtual async Task <IQueryable <CommentDto> > LoadComments(CancellationToken cancellationToken)
        {
            Guid customerId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            return(Mapper.FromEntityQueryToDtoQuery((await Repository
                                                     .GetAllAsync(cancellationToken))
                                                    .Where(comment => comment.CustomerId == customerId)));
        }
        public virtual async Task <IQueryable <InsurancePolicyDto> > LoadInsurancesByType(InsuranceType insuranceType, CancellationToken cancellationToken)
        {
            Guid customerId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            return(Mapper.FromEntityQueryToDtoQuery((await Repository
                                                     .GetAllAsync(cancellationToken))
                                                    .Where(insurance => insurance.CustomerId == customerId && insurance.InsuranceType == insuranceType)));
        }
Beispiel #6
0
        public virtual async Task <IQueryable <SosRequestDto> > GetMySosRequests(CancellationToken cancellationToken)
        {
            Guid customerId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            return(Mapper.FromEntityQueryToDtoQuery((await Repository
                                                     .GetAllAsync(cancellationToken))
                                                    .Where(sosR => sosR.CustomerId == customerId)));
        }
        public override Task <InsurancePolicyDto> Update(Guid key, InsurancePolicyDto dto, CancellationToken cancellationToken)
        {
            Guid customerId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            dto.CustomerId = customerId;

            return(base.Update(key, dto, cancellationToken));
        }
Beispiel #8
0
        public virtual async Task <ToDoItemDto> UpdateToDoItem(Guid key, ToDoItemDto toDoItem, CancellationToken cancellationToken)
        {
            if (toDoItem == null)
            {
                throw new BadRequestException("ToDoItemCouldNotBeNull");
            }

            Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            ToDoItem toDoItemToBeModified = await ToDoItemsRepository.GetByIdAsync(cancellationToken, key);

            if (toDoItemToBeModified == null)
            {
                throw new ResourceNotFoundException("ToDoItemCouldNotBeFound");
            }

            ToDoItemOptions toDoItemOptionsToBeModified = await ToDoItemOptionsListRepository.GetAll()
                                                          .FirstAsync(tdio => tdio.UserId == userId && tdio.ToDoItemId == key, cancellationToken);

            if (toDoItemOptionsToBeModified == null)
            {
                throw new ResourceNotFoundException("ToDoItemCouldNotBeFound");
            }

            if (toDoItem.ToDoGroupId != toDoItemToBeModified.ToDoGroupId)
            {
                throw new BadRequestException("ChangingToDoGroupIdIsNotSupportedAtTheMoment");
            }

            toDoItemToBeModified.Title       = toDoItem.Title;
            toDoItemToBeModified.IsImportant = toDoItem.IsImportant;
            toDoItemToBeModified.Notes       = toDoItem.Notes;
            toDoItemToBeModified.DueDate     = toDoItem.DueDate;

            toDoItemToBeModified.ModifiedOn = DateTimeProvider.GetCurrentUtcDateTime();

            if (toDoItemToBeModified.IsCompleted == false && toDoItem.IsCompleted == true)
            {
                toDoItemToBeModified.IsCompleted   = true;
                toDoItemToBeModified.CompletedById = userId;
            }
            else if (toDoItemToBeModified.IsCompleted == true && toDoItem.IsCompleted == false)
            {
                toDoItemToBeModified.IsCompleted   = false;
                toDoItemToBeModified.CompletedById = null;
            }

            toDoItemOptionsToBeModified.RemindOn      = toDoItem.RemindOn;
            toDoItemOptionsToBeModified.ShowInMyDayOn = toDoItem.ShowInMyDay == true ? (DateTimeOffset?)DateTimeProvider.GetCurrentUtcDateTime() : null;

            await ToDoItemsRepository.UpdateAsync(toDoItemToBeModified, cancellationToken);

            await ToDoItemOptionsListRepository.UpdateAsync(toDoItemOptionsToBeModified, cancellationToken);

            return(await GetMyToDoItems()
                   .FirstAsync(tdi => tdi.Id == key, cancellationToken));
        }
Beispiel #9
0
        public override async Task <CommentDto> Create(CommentDto dto, CancellationToken cancellationToken)
        {
            Guid customerId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            dto.CustomerId = customerId;

            dto.Code = await CommentRepository.GetNextSequenceValue();

            return(await base.Create(dto, cancellationToken));
        }
Beispiel #10
0
        public UserSetting GetCurrentUserSetting()
        {
            User user = UsersRepository.GetById(Guid.Parse(UserInformationProvider.GetCurrentUserId()));

            UserSetting result = new UserSetting
            {
                Culture = user.Culture.ToString()
            };

            return(result);
        }
        public virtual async Task DeleteToDoItem(Guid key, CancellationToken cancellationToken)
        {
            Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            ToDoItem toDoItemToBeDeleted = await ToDoItemsRepository.GetByIdAsync(cancellationToken, key);

            if (toDoItemToBeDeleted == null)
            {
                throw new ResourceNotFoundException("ToDoItemCouldNotBeFound");
            }

            await ToDoItemsRepository.DeleteAsync(toDoItemToBeDeleted, cancellationToken);
        }
Beispiel #12
0
        public virtual async Task <ToDoItemDto> CreateToDoItem(ToDoItemDto toDoItem, CancellationToken cancellationToken)
        {
            if (toDoItem == null)
            {
                throw new BadRequestException("ToDoItemMayNotBeNull");
            }

            Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            List <ToDoItemOptions> optionsList = new List <ToDoItemOptions> {
            };

            List <Guid> usersOfThisToDoGroup = toDoItem.ToDoGroupId == null ? (new List <Guid> {
                userId
            } /*ToDoItem has no to do group*/) : (await ToDoGroupOptionsListRepository
                                                  .GetAll()
                                                  .Where(tdgo => tdgo.ToDoGroupId == toDoItem.ToDoGroupId)
                                                  .Select(tdgo => tdgo.UserId)
                                                  .ToListAsync(cancellationToken));

            foreach (Guid otherUserId in usersOfThisToDoGroup)
            {
                ToDoItemOptions options = new ToDoItemOptions
                {
                    Id     = Guid.NewGuid(),
                    UserId = otherUserId
                };

                if (options.UserId == userId) /* For current user only */
                {
                    options.ShowInMyDayOn = toDoItem.ShowInMyDay == true ? (DateTimeOffset?)DateTimeProvider.GetCurrentUtcDateTime() : null;
                }

                optionsList.Add(options);
            }

            ToDoItem addedToDoItem = await ToDoItemsRepository.AddAsync(new ToDoItem
            {
                Id          = Guid.NewGuid(),
                CreatedById = userId,
                CreatedOn   = DateTimeProvider.GetCurrentUtcDateTime(),
                ModifiedOn  = DateTimeProvider.GetCurrentUtcDateTime(),
                Notes       = toDoItem.Notes,
                Title       = toDoItem.Title,
                ToDoGroupId = toDoItem.ToDoGroupId,
                Options     = optionsList
            }, cancellationToken);

            return(await GetMyToDoItems()
                   .FirstAsync(tdi => tdi.Id == addedToDoItem.Id, cancellationToken));
        }
Beispiel #13
0
        public virtual async Task SubmitSosRequest(SubmitSosRequestArgs args, CancellationToken cancellationToken)
        {
            Guid customerId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            SosRequest req = new SosRequest
            {
                CustomerId       = customerId,
                SosRequestStatus = EvlRequestStatus.SabteAvalie,
                Latitude         = args.sosReq.Latitude,
                Longitude        = args.sosReq.Longitude,
                Description      = args.sosReq.Description
            };

            await Repository.AddAsync(req, cancellationToken);
        }
Beispiel #14
0
        public virtual async Task KickUserFromToDoGroup(KickAnotherUserFromMyToDoGroupArge args, CancellationToken cancellationToken)
        {
            Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            ToDoGroup toDoGroupsToBeKickFrom = await ToDoGroupsRepository.GetAll()
                                               .Where(tdg => tdg.Id == args.toDoGroupId)
                                               .Select(tdg => new ToDoGroup
            {
                Id          = tdg.Id,
                CreatedById = tdg.CreatedById,
                Items       = tdg.Items.Select(tdi => new ToDoItem
                {
                    Id      = tdi.Id,
                    Options = tdi.Options.Where(tdio => tdio.UserId == args.userId).Select(tdio => new ToDoItemOptions
                    {
                        Id     = tdio.Id,
                        UserId = tdio.UserId
                    }).ToList()
                }).ToList()
            }).FirstOrDefaultAsync(cancellationToken);;

            if (toDoGroupsToBeKickFrom == null)
            {
                throw new ResourceNotFoundException("ToDoGroupCouldNotBeFound");
            }

            if (toDoGroupsToBeKickFrom.CreatedById != userId)
            {
                throw new DomainLogicException("OnlyOwnerCanKickOtherUsers");
            }

            User kickedUser = await UsersRepository.GetByIdAsync(cancellationToken, args.userId);

            if (kickedUser == null)
            {
                throw new ResourceNotFoundException("UserCouldNotBeFoundToBeKicked");
            }

            foreach (ToDoItemOptions toDoItemOptionsToBeDeleted in toDoGroupsToBeKickFrom.Items.SelectMany(tdi => tdi.Options) /* We've loaded options of to be kicked user only! */)
            {
                await ToDoItemOptionsListRepository.DeleteAsync(toDoItemOptionsToBeDeleted, cancellationToken);
            }

            ToDoGroupOptions toDoGroupOptionsToBeDeleted = await ToDoGroupOptionsListRepository.GetAll().FirstOrDefaultAsync(tdo => tdo.ToDoGroupId == args.toDoGroupId && tdo.UserId == args.userId);

            await ToDoGroupOptionsListRepository.DeleteAsync(toDoGroupOptionsToBeDeleted, cancellationToken);
        }
Beispiel #15
0
        public virtual IQueryable <ToDoGroupDto> GetMyToDoGroups()
        {
            Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            return(ToDoGroupOptionsListRepository.GetAll().Where(tdgo => tdgo.UserId == userId)
                   .Select(tdgo => new ToDoGroupDto
            {
                Id = tdgo.ToDoGroup.Id,
                CreatedBy = tdgo.ToDoGroup.CreatedBy.UserName,
                CreatedOn = tdgo.ToDoGroup.CreatedOn,
                HideCompletedToDoItems = tdgo.HideCompletedToDoItems,
                ModifiedOn = tdgo.ToDoGroup.ModifiedOn,
                SharedByCount = tdgo.ToDoGroup.Options.Count,
                SortedBy = tdgo.SortedBy,
                Theme = tdgo.Theme,
                Title = tdgo.ToDoGroup.Title
            }));
        }
        public virtual async Task <Customer> AddNewCustomer(Customer customer, CancellationToken cancellationToken)
        {
            if (await DbContext.BlackLists.AnyAsync(bl => bl.Value == customer.FirstName || bl.Value == customer.LastName, cancellationToken))
            {
                throw new DomainLogicException("InvalidFirstNameOrLastName");
            }

            Guid currentUserId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            customer.CreatedById = currentUserId;
            customer.IsActive    = true;

            await DbContext.Customers.AddAsync(customer, cancellationToken);

            await SmsService.SendSms(customer.PhoneNo, $"Welcome {customer.FirstName} {customer.LastName}", cancellationToken);

            return(customer);
        }
Beispiel #17
0
        public virtual async Task DeleteToDoGroup(Guid key, CancellationToken cancellationToken)
        {
            Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            ToDoGroup toDoGroupToBeDeleted = await ToDoGroupsRepository.GetByIdAsync(cancellationToken, key);

            if (toDoGroupToBeDeleted == null)
            {
                throw new ResourceNotFoundException("ToDoGroupCouldNotBeFound");
            }

            if (toDoGroupToBeDeleted.CreatedById != userId)
            {
                throw new DomainLogicException("OnlyOwnerCanDeleteTheToDoGroup");
            }

            await ToDoGroupsRepository.DeleteAsync(toDoGroupToBeDeleted, cancellationToken);
        }
Beispiel #18
0
        public virtual async Task <ToDoGroupDto> ShareToDoGroupWithAnotherUser(ShareToDoGroupWithAnotherUserArgs args, CancellationToken cancellationToken)
        {
            Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            ToDoGroup toDoGroup = await ToDoGroupsRepository.GetAll()
                                  .Where(tdg => tdg.CreatedById == userId && tdg.Id == args.toDoGroupId)
                                  .Select(tdg => new ToDoGroup
            {
                Id    = tdg.Id,
                Items = tdg.Items.Select(tdi => new ToDoItem
                {
                    Id = tdi.Id
                }).ToList()
            }).FirstOrDefaultAsync(cancellationToken);

            if (toDoGroup == null)
            {
                throw new ResourceNotFoundException("ToDoGroupCouldNotBeFound");
            }

            await ToDoGroupOptionsListRepository.AddAsync(new ToDoGroupOptions
            {
                HideCompletedToDoItems = false,
                Id          = Guid.NewGuid(),
                SortedBy    = SortBy.CreatedDate,
                Theme       = "Green",
                ToDoGroupId = args.toDoGroupId,
                UserId      = args.anotherUserId
            }, cancellationToken);

            foreach (ToDoItem toDoItem in toDoGroup.Items)
            {
                await ToDoItemOptionsListRepository.AddAsync(new ToDoItemOptions
                {
                    Id            = Guid.NewGuid(),
                    ToDoItemId    = toDoItem.Id,
                    UserId        = args.anotherUserId,
                    ShowInMyDayOn = null
                }, cancellationToken);
            }

            return(await GetMyToDoGroups().FirstAsync(tdg => tdg.Id == args.toDoGroupId, cancellationToken));
        }
Beispiel #19
0
        public virtual async Task <ToDoGroupDto> UpdateToDoGroup(Guid key, ToDoGroupDto toDoGroup, CancellationToken cancellationToken)
        {
            if (toDoGroup == null)
            {
                throw new BadRequestException("ToDoGroupMayNotBeNull");
            }

            Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            ToDoGroup toDoGroupToBeModified = await ToDoGroupsRepository.GetByIdAsync(cancellationToken, key);

            if (toDoGroupToBeModified == null)
            {
                throw new ResourceNotFoundException("ToDoGroupCouldNotBeFound");
            }

            ToDoGroupOptions toDoGroupOptionsToBeModified = await ToDoGroupOptionsListRepository.GetAll()
                                                            .FirstAsync(tdgo => tdgo.UserId == userId && tdgo.ToDoGroupId == key, cancellationToken);

            if (toDoGroupOptionsToBeModified == null)
            {
                throw new ResourceNotFoundException("ToDoGroupCouldNotBeFound");
            }

            toDoGroupToBeModified.Title      = toDoGroup.Title;
            toDoGroupToBeModified.ModifiedOn = DateTimeProvider.GetCurrentUtcDateTime();

            toDoGroupOptionsToBeModified.Theme = toDoGroup.Theme;
            toDoGroupOptionsToBeModified.HideCompletedToDoItems = toDoGroup.HideCompletedToDoItems;
            toDoGroupOptionsToBeModified.SortedBy = toDoGroup.SortedBy;

            await ToDoGroupsRepository.UpdateAsync(toDoGroupToBeModified, cancellationToken);

            await ToDoGroupOptionsListRepository.UpdateAsync(toDoGroupOptionsToBeModified, cancellationToken);

            return(await GetMyToDoGroups()
                   .FirstAsync(tdg => tdg.Id == key, cancellationToken));
        }
        public virtual IQueryable <ToDoItemDto> GetMyToDoItems()
        {
            Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId());

            return(ToDoItemOptionsListRepository.GetAll().Where(tdio => tdio.UserId == userId)
                   .Select(tdio => new ToDoItemDto
            {
                Id = tdio.ToDoItem.Id,
                CreatedOn = tdio.ToDoItem.CreatedOn,
                ModifiedOn = tdio.ToDoItem.ModifiedOn,
                Title = tdio.ToDoItem.Title,
                RemindOn = tdio.RemindOn,
                CompletedBy = tdio.ToDoItem.CompletedBy.UserName,
                CreatedBy = tdio.ToDoItem.CreatedBy.UserName,
                DueDate = tdio.ToDoItem.DueDate,
                IsCompleted = tdio.ToDoItem.IsCompleted,
                IsImportant = tdio.ToDoItem.IsImportant,
                Notes = tdio.ToDoItem.Notes,
                ShowInMyDay = tdio.ShowInMyDayOn.Value.Date == DateTimeProvider.GetCurrentUtcDateTime().Date,
                ToDoGroupId = tdio.ToDoItem.ToDoGroupId,
                ToDoItemStepsCount = tdio.ToDoItem.Steps.Count(),
                ToDoItemStepsCompletedCount = tdio.ToDoItem.Steps.Count(s => s.IsCompleted == true),
            }));
        }
Beispiel #21
0
        public sealed override async Task IsActiveAsync(IsActiveContext context)
        {
            try
            {
                if (UserInformationProvider.IsAuthenticated() == false)
                {
                    context.IsActive = false;
                }
                else
                {
                    context.IsActive = await UserIsActiveAsync(context, UserInformationProvider.GetCurrentUserId(), OwinContext.Request.CallCancelled).ConfigureAwait(false);
                }
            }
            catch
            {
                context.IsActive = false;
            }
            finally
            {
                context.IsActive = true; // Temporary fix: To prevent redirect loop on logout.
            }

            await base.IsActiveAsync(context).ConfigureAwait(false);
        }
        public async Task <UserSetting> GetCurrentUserSettingAsync(CancellationToken cancellationToken)
        {
            if (UserInformationProvider.IsAuthenticated())
            {
                User user = await UsersRepository.GetByIdAsync(cancellationToken, Guid.Parse(UserInformationProvider.GetCurrentUserId()));

                UserSetting result = new UserSetting
                {
                    Culture = user.Culture.ToString()
                };

                return(result);
            }

            return(null);
        }
        public override async Task <SingleResult <ChangeSetDto> > Create(ChangeSetDto dto, CancellationToken cancellationToken)
        {
            SingleResult <ChangeSetDto> insertedChangeSet = await base.Create(dto, cancellationToken);

            User user = await UsersRepository.GetByIdAsync(cancellationToken, Guid.Parse(UserInformationProvider.GetCurrentUserId()));

            MessageSender.SendMessageToGroups("ChangeSetHasBeenInsertedByUser", new { userName = user.UserName, title = dto.Title }, groupNames: new[] { user.Culture.ToString() });

            await BackgroundJobWorker.PerformBackgroundJobAsync <IMessageSender>(messageSender => messageSender.SendMessageToGroups("ChangeSetHasBeenInsertedByUser", new { userName = user.UserName, title = dto.Title }, new[] { user.Culture.ToString() })); // to test background job worker & message sender together!

            return(insertedChangeSet);
        }
Beispiel #24
0
        public override async Task <ChangeSetDto> Create(ChangeSetDto dto, CancellationToken cancellationToken)
        {
            ChangeSetDto insertedChangeSet = await base.Create(dto, cancellationToken);

            User user = await UsersRepository.GetByIdAsync(cancellationToken, Guid.Parse(UserInformationProvider.GetCurrentUserId()));

            MessageSender.SendMessageToGroups("ChangeSetHasBeenInsertedByUser", new { userName = user.UserName, title = insertedChangeSet.Title }, groupNames: new[] { user.Culture.ToString() });

            return(insertedChangeSet);
        }
        public override async Task OnConnected(MessagesHub hub)
        {
            User user = await UsersRepository.GetByIdAsync(OwinContext.Request.CallCancelled, Guid.Parse(UserInformationProvider.GetCurrentUserId()));

            await hub.Groups.Add(hub.Context.ConnectionId, user.Culture.ToString());

            await base.OnConnected(hub);
        }