Beispiel #1
0
 public static ArkadaslarimListeDto ToDto(this ArkadaslikTeklif entity)
 {
     return(entity == null ? null : Mapper.Map <ArkadaslarimListeDto>(entity));
 }
        public async Task <IActionResult> TeklifEt(int isteyenId, int cevaplayanId)
        {
            var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            if (currentUserId != isteyenId)
            {
                throw new UnauthorizedError("Güvenlik nedeniyle bu işlem yapılamaz!");
            }
            if (isteyenId == cevaplayanId)
            {
                throw new BadRequestError("Kendinize arkadaşlık teklif edemezsiniz!!!");
            }

            if (await arkadaslikRepo.KullaniciBulAsync(cevaplayanId) == null)
            {
                throw new NotFoundError("Teklifi cevaplayacak kullanıcı bilgisi yok!");
            }

            var teklifZatenVar = await arkadaslikRepo.TeklifiBulAsync(isteyenId, cevaplayanId);

            if (teklifZatenVar != null && teklifZatenVar.IptalEdenKullaniciNo != isteyenId)
            {
                throw new BadRequestError("Bu kullanıcıya zaten arkadaşlık teklif ettiniz!");
            }

            if (teklifZatenVar == null)
            {
                teklifZatenVar = await arkadaslikRepo.TeklifiBulAsync(cevaplayanId, isteyenId);
            }

            if (teklifZatenVar != null && teklifZatenVar.IptalEdenKullaniciNo != isteyenId)
            {
                throw new BadRequestError("Bu kullanıcı zaten size arkadaşlık teklif etmiş!");
            }

            if (teklifZatenVar != null)
            {
                teklifZatenVar.IptalTarihi          = null;
                teklifZatenVar.IptalEdildi          = false;
                teklifZatenVar.IptalEdenKullaniciNo = null;
                if (await arkadaslikRepo.KaydetAsync())
                {
                    return(Ok());
                }
                else
                {
                    throw new InternalServerError("Teklif kaydedilirken bir hata oluştu. Lütfen sonra tekrar deneyin...");
                }
            }

            ArkadaslikTeklif yeniTeklif = new ArkadaslikTeklif
            {
                TeklifEdenNo   = isteyenId,
                TeklifEdilenNo = cevaplayanId,
                IstekTarihi    = DateTime.Now
            };
            await arkadaslikRepo.EkleAsync <ArkadaslikTeklif>(yeniTeklif);

            if (await arkadaslikRepo.KaydetAsync())
            {
                return(Ok());
            }
            return(BadRequest("Arkadaşlık teklifi yapılamad!"));
        }
        public async Task <IActionResult> TeklifEt(int isteyenId, int cevaplayanId)
        {
            return(await KullaniciVarsaCalistir <IActionResult>(async() =>
            {
                if (isteyenId != aktifKullaniciNo)
                {
                    throw new UnauthorizedError();
                }
                if (isteyenId == cevaplayanId)
                {
                    return BadRequest("Kendinize arkadaşlık teklif edemezsiniz!!!");
                }

                if (await arkadaslikRepo.KullaniciBulAsync(cevaplayanId) == null)
                {
                    return NotFound("Teklifi cevaplayacak kullanıcı bilgisi yok!");
                }

                var teklifZatenVar = await arkadaslikRepo.TeklifiBulAsync(isteyenId, cevaplayanId);

                if (teklifZatenVar != null && teklifZatenVar.IptalEdenKullaniciNo != isteyenId)
                {
                    return BadRequest("Bu kullanıcıya zaten arkadaşlık teklif ettiniz!");
                }

                if (teklifZatenVar == null)
                {
                    teklifZatenVar = await arkadaslikRepo.TeklifiBulAsync(cevaplayanId, isteyenId);
                }

                if (teklifZatenVar != null && teklifZatenVar.IptalEdenKullaniciNo != isteyenId)
                {
                    return BadRequest("Bu kullanıcı zaten size arkadaşlık teklif etmiş!");
                }

                if (teklifZatenVar != null)
                {
                    teklifZatenVar.IptalTarihi = null;
                    teklifZatenVar.IptalEdildi = false;
                    teklifZatenVar.IptalEdenKullaniciNo = null;
                    if (await arkadaslikRepo.KaydetAsync())
                    {
                        return await TeklifiDondur(teklifZatenVar.TeklifEdenNo, teklifZatenVar.TeklifEdilenNo, aktifKullaniciNo);
                    }
                    else
                    {
                        throw new InternalServerError("Teklif kaydedilirken bir hata oluştu. Lütfen sonra tekrar deneyin...");
                    }
                }

                ArkadaslikTeklif yeniTeklif = new ArkadaslikTeklif
                {
                    TeklifEdenNo = isteyenId,
                    TeklifEdilenNo = cevaplayanId,
                    IstekTarihi = DateTime.Now
                };
                await arkadaslikRepo.EkleAsync <ArkadaslikTeklif>(yeniTeklif);
                if (await arkadaslikRepo.KaydetAsync())
                {
                    return await TeklifiDondur(yeniTeklif.TeklifEdenNo, yeniTeklif.TeklifEdilenNo, aktifKullaniciNo);
                }
                return BadRequest("Arkadaşlık teklifi yapılamad!");
            }));
        }