Пример #1
0
        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);
        }
Пример #2
0
        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());
        }
Пример #3
0
        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));
        }
Пример #4
0
        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);
        }
Пример #5
0
 public async Task <FlareGroup[]> GetFlareGroupsByOrganizationId(Guid organizationId)
 {
     return(await FlareGroupRepository.GetByOrganizationId(organizationId));
 }
Пример #6
0
 public async Task <FlareGroup> GetFlareGroupById(Guid id)
 {
     return(await FlareGroupRepository.Get(id));
 }
Пример #7
0
        public FlareGroupService()
        {
            FlareGroupRepository = new FlareGroupRepository();

            FlareGroupMemberRepository = new FlareGroupMemberRepository();
        }