예제 #1
0
        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));
        }
예제 #2
0
        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());
        }
예제 #3
0
        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));;
        }
예제 #4
0
        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));
        }