public async Task <FlareGroup> CreateFlareGroup(FlareGroup flareGroup) { if (!ValidateFlareGroup(flareGroup)) { throw new ArgumentException("Invalid Flare Group!"); } if (flareGroup.Id != Guid.Empty) { var existing = await UpdateFlareGroup(flareGroup); if (existing != null) { return(existing); } flareGroup = await FlareGroupRepository.Create(flareGroup); return(flareGroup); } flareGroup.Id = Guid.NewGuid(); flareGroup = await FlareGroupRepository.Create(flareGroup); return(flareGroup); }
public async Task <FlareGroup[]> GetFlareGroupsByUserId(Guid userId) { FlareGroupMember[] memberships = await FlareGroupMemberRepository.GetByUserId(userId); FlareGroup[] membershipGroups = await Task.WhenAll(memberships.Select(x => x.FlareGroupId).Select(FlareGroupRepository.Get)); FlareGroup[] ownershipGroups = await FlareGroupRepository.GetByOwnerId(userId); return(membershipGroups.Concat(ownershipGroups).GroupBy(x => x.Id).Select(x => x.First()).ToArray()); }
public async Task <bool> DeleteFlareGroup(Guid id) { FlareGroup flareGroup = await GetFlareGroupById(id); if (flareGroup == null) { return(false); } var memberships = await FlareGroupMemberRepository.GetByFlareGroupId(id); await Task.WhenAll(memberships.Select(x => x.Id).Select(FlareGroupMemberRepository.Delete)); return(await FlareGroupRepository.Delete(id)); }
public async Task <FlareGroup> UpdateFlareGroup(FlareGroup flareGroup) { if (!ValidateFlareGroup(flareGroup)) { throw new ArgumentException("Invalid Flare Group!"); } FlareGroup existing = await GetFlareGroupById(flareGroup.Id); if (existing == null) { return(null); } //merge values existing.Description = flareGroup.Description; existing.Name = flareGroup.Name; if (flareGroup.Data != null) { foreach (var kv in flareGroup.Data) { if (existing.Data.ContainsKey(kv.Key)) { existing.Data[kv.Key] = kv.Value; } else { existing.Data.Add(kv.Key, kv.Value); } } } flareGroup = await FlareGroupRepository.Update(flareGroup); return(flareGroup); }
public async Task <FlareGroup[]> GetFlareGroupsByOrganizationId(Guid organizationId) { return(await FlareGroupRepository.GetByOrganizationId(organizationId)); }
public async Task <FlareGroup> GetFlareGroupById(Guid id) { return(await FlareGroupRepository.Get(id)); }
public FlareGroupService() { FlareGroupRepository = new FlareGroupRepository(); FlareGroupMemberRepository = new FlareGroupMemberRepository(); }