public async Task <bool> DeleteBuddy([FromBody] BuddyLookup lookupData) { bool success = false; //check if buddy is added to list //if not, check for request //if not, throw exception var from_profile = (await profileRepository.Lookup(lookupData.SourceProfile)).First(); var to_profile = (await profileRepository.Lookup(lookupData.TargetProfile)).First(); var items = await buddyRepository.Lookup(lookupData); if (items.Count() <= 0) { if (buddyRepository.DeleteBuddyRequest(from_profile, to_profile) && (!lookupData.silent.HasValue || (lookupData.silent.HasValue && lookupData.silent.Value))) { //TODO: check if offline... add to redis to resend when user logs in await buddyRepository.Delete(lookupData); //delete just in case success = true; } throw new ArgumentException(); } if (success == false) { success = await buddyRepository.Delete(lookupData); } if (success) { buddyRepository.SendDeleteEvent(from_profile, to_profile); } return(success); }