public CommonResult<CreateGroupResult> Create(CreateGroupRequest request) { using(var context = ContextFactory.GetDbContext(_dbConfiguration)) { var user = context.Users.SingleOrDefault(u => u.UserName == request.UserName); if (user != null) { var groupWithGivenName = context.Groups.FirstOrDefault(x => x.Name == request.Name); if (groupWithGivenName == null) { var group = new Group { Name = request.Name, Description = request.Description, IsPrivate = request.IsPrivate, Password = request.Password, Owner = user }; context.Groups.Add(group); context.UserGroups.Add(new UserGroup { User = user, Group = group }); context.SaveChanges(); return CommonResult<CreateGroupResult>.Success(new CreateGroupResult { Id = group.Id }); } else { return CommonResult<CreateGroupResult>.Failure("Grupa o podanej nazwie już istnieje."); } } else { return CommonResult<CreateGroupResult>.Failure("Nie znaleziono podanego użytkownika."); } } }
private void GetAdditionalDataForGroup(Group group, GroupData groupData, bool withOwner = false, bool withUsers = false, bool withTasks = false) { using (var context = ContextFactory.GetDbContext(_dbConfiguration)) { if (withOwner) { groupData.Owner = Mapper.Map<UserProfileData>(group.Owner); } if (withUsers) { var userIdentifiers = context.UserGroups.Where(x => x.Group.Id == group.Id).Select(x => x.User.Id); var users = new List<UserProfileData>(); foreach (var id in userIdentifiers) { var user = context.Users.FirstOrDefault(x => x.Id == id); if(user != null) { var mappedUserData = Mapper.Map<UserProfileData>(user); mappedUserData.ProfileImagePath = GenerateImagePath(user.ImageName); users.Add(mappedUserData); } } groupData.Users = users; } if (withTasks) { groupData.Tasks = group.Tasks != null ? group.Tasks.Select(x => Mapper.Map<TaskListItemData>(x)) : new List<TaskListItemData>(); foreach (var task in groupData.Tasks) { task.GroupId = groupData.Id; task.GroupName = groupData.Name; } } } }