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 <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)); }
private bool ValidateFlareGroup(FlareGroup flareGroup) { if (flareGroup.OwnerId == Guid.Empty) { throw new ArgumentException("Flare group must have an admin!"); } if (flareGroup.OrganizationId == Guid.Empty) { throw new ArgumentException("Flare group must have an organization!"); } if (string.IsNullOrWhiteSpace(flareGroup.Name)) { throw new ArgumentException("Flare group must have a name!"); } return(true); }
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 <ActionResult> Put(Guid id, [FromBody] FlareGroup flareGroup) { flareGroup.Id = id; return(Ok(await FlareGroupService.UpdateFlareGroup(flareGroup))); }
public async Task <ActionResult> Post([FromBody] FlareGroup flareGroup) { return(Ok(await FlareGroupService.CreateFlareGroup(flareGroup))); }