public async Task <IHttpActionResult> AccettaAmicizia(String idAmico) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Guid guidCurrentUser = new Guid(User.Identity.GetUserId()); UserAmicizia amicizia = await dbDataContext.UserAmicizia.Where(x => x.IdUserRichiedente == new Guid(idAmico) && x.IdUserDestinatario == guidCurrentUser).FirstAsync(); if (amicizia == null) { return(NotFound()); } amicizia.Accettato = true; try { dbDataContext.SaveChanges(); } catch (DbUpdateException) { if (!UserAmiciziaExists(amicizia.IdUserDestinatario, amicizia.IdUserRichiedente)) { return(NotFound()); } else { throw; } } return(Ok(amicizia)); }
public async Task <IHttpActionResult> AmiciziaDeleteOrDeny(Guid IdAmico) { if (IdAmico == null || IdAmico == Guid.Empty || !ModelState.IsValid) { return(BadRequest(ModelState)); } Guid guidCurrentUser = new Guid(User.Identity.GetUserId()); UserAmicizia userAmicizia = await dbDataContext.UserAmicizia .FirstOrDefaultAsync(x => ( (x.IdUserRichiedente == guidCurrentUser && x.IdUserDestinatario == IdAmico) || (x.IdUserRichiedente == IdAmico && x.IdUserDestinatario == guidCurrentUser) ) ); if (userAmicizia == null) { return(NotFound()); } try { dbDataContext.UserAmicizia.Remove(userAmicizia); dbDataContext.SaveChanges(); } catch { throw; } return(Ok()); }
public IHttpActionResult InserisciAmicizia(String idDestinatario) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } UserAmicizia amicizia = new UserAmicizia(); amicizia.IdUserDestinatario = new Guid(idDestinatario); amicizia.IdUserRichiedente = new Guid(User.Identity.GetUserId()); amicizia.Accettato = false; dbDataContext.UserAmicizia.Add(amicizia); try { dbDataContext.SaveChanges(); } catch (DbUpdateException) { if (UserAmiciziaExists(amicizia.IdUserDestinatario, amicizia.IdUserRichiedente)) { return(Conflict()); } else { throw; } } return(Ok(amicizia));; }
public async Task <IHttpActionResult> GetUserInfoByIdUsersAsync(Guid idUser) { UserInfo userInfo = await dbDataContext.UserInfo.SingleOrDefaultAsync(x => x.IdAspNetUser == idUser); string email = await dbContext.Users.Where(x => x.Id == idUser.ToString()).Select(x => x.Email).FirstOrDefaultAsync(); //FIXME inserire anche immagine da Facebook //ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); UserInfoDto dto = UserInfoMapper.UserInfoToUserInfoDto(userInfo, email); Guid idUtenteCorrente = new Guid(User.Identity.GetUserId()); //se idUtenteCorrente == idUser, sto restituendo il profilo dell'utente corrente quindi non c'è nessuna relazione da stabilire: metto ME e restituisco if (idUser == idUtenteCorrente) { dto.Relation = UserRelation.ME; return(Ok(dto)); } //recupero la relazione tra current e utente con idUser UserAmicizia userAmicizia = await dbDataContext.UserAmicizia .Where(x => (x.IdUserDestinatario == idUser && x.IdUserRichiedente == idUtenteCorrente) || (x.IdUserDestinatario == idUtenteCorrente && x.IdUserRichiedente == idUser) ).FirstOrDefaultAsync(); //se la relazione è null non sono amici if (userAmicizia == null) { dto.Relation = UserRelation.STRANGER; } //se nella relazione accettato = true i due utente sono già in contatto (sono amici) else if (userAmicizia.Accettato == true) { dto.Relation = UserRelation.CONTACT; } //se accettato = false e destinatario = current, richiesta in entrata else if (userAmicizia.Accettato == false && userAmicizia.IdUserDestinatario == idUtenteCorrente) { dto.Relation = UserRelation.REQUEST_IN; } //se accettato = false e richiedente = current, richiesta in uscita else if (userAmicizia.Accettato == false && userAmicizia.IdUserRichiedente == idUtenteCorrente) { dto.Relation = UserRelation.REQUEST_OUT; } return(Ok(dto)); }