private async Task <TotalPageSearchResponse> TuruneGoreAra(IEmlakLocation _ilanLocation, IEmlakKategoriler _emlakKategoriler, TotalPageSearchResponse total, List <IlanIlanlarResponse> listIlanlar, List <EmlakLocationResponse> listAdresler, SerchRequest request)
        {
            int pageSize = 2;
            var tipi     = await _ilanLocation.GetAsync(request.SemtId);

            if (total.totalRecord <= 0)
            {
                total.totalRecord = tipi.IlanIlanlar.Count();
            }
            if (total.totalPage <= 0)
            {
                total.totalPage = (total.totalRecord / pageSize) + ((total.totalRecord % pageSize) > 0 ? 1 : 0);
            }
            total.currentPage = request.page;
            int skip = (request.page - 1) * pageSize;
            var kat  = tipi.IlanIlanlar.Skip(skip).Take(pageSize).Where(x => x.Private == "Genel");


            foreach (var item in kat)
            {
                listAdresler.Clear();
                foreach (var adres in item.EmlakLocation)
                {
                    if (adres.Id > 0)
                    {
                        listAdresler.Add(new EmlakLocationResponse
                        {
                            LocationName = adres.LocationName
                        });
                    }
                    else
                    {
                        total.isLocation = false;
                    }
                }
                string resim      = (item.IlanResimler.Count() > 0 ? item.IlanResimler.First().Resim : "noimages.jpg");
                string ilanKimden = item.IlanKimden.First().EmlakKimden.Kimden;
                listIlanlar.Add(new IlanIlanlarResponse
                {
                    Id               = item.Id,
                    Baslik           = item.Baslik,
                    Aciklama         = item.Aciklama,
                    Fiyat            = item.Fiyat,
                    MetreKare        = item.MetreKare,
                    Takasli          = item.TakasliID,
                    TakasTuru        = item.TakasTuru,
                    Resim            = resim,
                    IletisimTelefonu = item.IletisimTelefonu,
                    IlanKimden       = ilanKimden,
                    Location         = listAdresler
                });
            }
            //total.Adresler = listAdresler;
            //  total.NewSearchList = listKategori;
            total.Ilanlar = listIlanlar;
            return(total);
        }
        //İlan Ekle
        public Task <IlanIlanlarResponse> CreateAsync(EmlakIlanRequest request)
        {
            return(base.ExecuteWithExceptionHandledOperation(async() =>
            {
                #region İlan Genel Özellikler
                IlanRequest ilan = new IlanRequest();
                ilan.Baslik = request.Baslik;
                ilan.Aciklama = request.Aciklama;
                // var roundedResult = Math.Round(Convert.ToDouble(request.Fiyat.Insert(1,"."), 2);
                ilan.Fiyat = Convert.ToDecimal(request.Fiyat); //.Replace(".",",")
                ilan.MetreKare = request.MetreKare;
                ilan.UserName = request.UserName;
                ilan.Private = request.Private;
                ilan.CepTelefonu = request.CepTelefonu;
                ilan.Sahibi = request.Sahibi;
                ilan.IletisimTelefonu = request.IletisimTelefonu;
                #region Satılık Devren
                if (request.SatilikId == 2 || request.SatilikId == 4)
                {
                    ilan.TakasliID = request.TakasliID;
                    ilan.TakasTuru = request.TakasTuru;
                }
                #endregion
                #region Satılık
                if (request.SatilikId == 2)
                {
                    ilan.Ada = request.Ada;
                    ilan.Pafta = request.Pafta;
                    ilan.Parsel = request.Parsel;
                }
                #endregion
                var ilanlarIlan = Mapper.Map <IlanIlanlar>(ilan);
                #region Ilan Root kategori
                //Satılık Kiralı Devren
                int tur = request.SatilikId;
                var turu = await _emlakKategoriler.GetAsync(tur);
                //Konut İşyeri Arsa
                int tip = request.IlanTuru;
                var tipi = await _emlakKategoriler.GetAsync(tip);

                ilanlarIlan.EmlakKategoriler.Add(turu);
                ilanlarIlan.EmlakKategoriler.Add(tipi);
                #endregion
                #region Semt Mahalle Ilçe
                int ilce = request.id;
                var getIlce = await _ilanLocation.GetAsync(ilce);
                ilanlarIlan.EmlakLocation.Add(getIlce);

                int semt = request.SemtId;
                var getSemt = await _ilanLocation.GetAsync(semt);
                ilanlarIlan.EmlakLocation.Add(getSemt);

                int mahalle = request.MahalleId;
                var getMahalle = await _ilanLocation.GetAsync(mahalle);

                ilanlarIlan.EmlakLocation.Add(getMahalle);
                #endregion
                _ilanIlanlar.Add(ilanlarIlan);
                await _ilanIlanlar.SaveChangeAsync();
                #endregion

                #region Ilan Kimden
                IlanKimdenRequest ilanKimden = new IlanKimdenRequest();
                ilanKimden.KimdemID = request.IlanKimden;
                ilanKimden.EmlakIlanID = ilanlarIlan.Id;

                var ilanKmd = Mapper.Map <IlanKimden>(ilanKimden);
                _ilanKimden.Add(ilanKmd);
                await _ilanKimden.SaveChangeAsync();
                #endregion

                #region Konut Özellikler
                if (tip == 5 || tip == 11)
                {
                    IlanKonutTipiOzelliklerRequest konutTipi = new IlanKonutTipiOzelliklerRequest();
                    konutTipi.EmlakIlanID = ilanlarIlan.Id;
                    konutTipi.KonutTipiOzellikler = request.KonutTipi;

                    var konuttipi = Mapper.Map <IlanKonutTipiOzellikler>(konutTipi);
                    _emlakTip.Add(konuttipi);
                    await _emlakTip.SaveChangeAsync();

                    IlanlarEmlakGenelRequest genel = new IlanlarEmlakGenelRequest();
                    genel.EmlakIlanID = ilanlarIlan.Id;
                    genel.IsitmaID = request.Isitma;
                    genel.BulunduguKatID = request.BulunduguKat;
                    genel.OdaSayisiID = request.OdaSayisi;

                    var emlakGenel = Mapper.Map <IlanlarEmlakGenel>(genel);
                    _genel.Add(emlakGenel);
                    await _genel.SaveChangeAsync();
                }
                #endregion

                #region İşyeri Özellikler
                if (tip == 6 || tip == 12)
                {
                    IlanKullanimAmaciRequest ilanKullanim = new IlanKullanimAmaciRequest();
                    ilanKullanim.EmlakIlanID = ilanlarIlan.Id;
                    ilanKullanim.KullanimAmaci = request.EmlakKullanimAmaci;

                    var ilankullanim = Mapper.Map <IlanKullanimAmaci>(ilanKullanim);
                    _ilanKullanimAmaci.Add(ilankullanim);
                    await _ilanKullanimAmaci.SaveChangeAsync();

                    IlanlarEmlakGenelRequest genel = new IlanlarEmlakGenelRequest();
                    genel.EmlakIlanID = ilanlarIlan.Id;
                    genel.IsitmaID = request.Isitma;
                    genel.BulunduguKatID = request.BulunduguKat;
                    // genel.OdaSayisiID = request.OdaSayisi;

                    var emlakGenel = Mapper.Map <IlanlarEmlakGenel>(genel);
                    _genel.Add(emlakGenel);
                    await _genel.SaveChangeAsync();
                }
                #endregion

                #region İşyeri Konut Ortak Özellikler
                if (tip == 5 || tip == 6 || tip == 11 || tip == 12)
                {
                    IlanIcOzelliklerRequest icOzellikler = new IlanIcOzelliklerRequest();
                    string remove = request.IcOzellikler.Replace("[", "").Replace("]", "").Trim();
                    string[] temp = remove.Split(',');
                    if (temp.Any())
                    {
                        foreach (var item in temp)
                        {
                            icOzellikler.EmlakIlanID = ilanlarIlan.Id;
                            icOzellikler.IcOzellikler = item;

                            var ilanicozellikler = Mapper.Map <IlanIcOzellikler>(icOzellikler);
                            _icOzellikler.Add(ilanicozellikler);
                            await _icOzellikler.SaveChangeAsync();
                        }
                    }

                    IlanDisOzelliklerRequest disOzellikler = new IlanDisOzelliklerRequest();
                    string removedis = request.DisOzellikler.Replace("[", "").Replace("]", "").Trim();
                    string[] tempdis = removedis.Split(',');
                    if (tempdis.Any())
                    {
                        foreach (var item in tempdis)
                        {
                            disOzellikler.EmlakIlanID = ilanlarIlan.Id;
                            disOzellikler.DisOzellikler = item;

                            var ilandisozellikler = Mapper.Map <IlanDisOzellikler>(disOzellikler);
                            _disOzellikler.Add(ilandisozellikler);
                            await _disOzellikler.SaveChangeAsync();
                        }
                    }
                }
                #endregion

                #region Arsa özellikler
                if (tip == 7 || tip == 8 || tip == 10 || tip == 9 || tip == 13 || tip == 14 || tip == 15 || tip == 16)
                {
                    IlanImarTapuDurumuRequest tapu = new IlanImarTapuDurumuRequest();
                    tapu.EmlakIlanID = ilanlarIlan.Id;
                    // tapu.ImarDurumID = request.EmlakImarDurumu;
                    tapu.TapuDurumId = request.EmlakTapuDurumu;
                    var tapudurumu = Mapper.Map <IlanImarTapuDurumu>(tapu);
                    _ilanImarTapuDurumu.Add(tapudurumu);
                    await _ilanImarTapuDurumu.SaveChangeAsync();

                    IlanImarDurumuRequest imar = new IlanImarDurumuRequest();
                    imar.EmlakIlanID = ilanlarIlan.Id;
                    // tapu.ImarDurumID = request.EmlakImarDurumu;
                    imar.ImarDurumID = request.EmlakImarDurumu;
                    var imardurumu = Mapper.Map <IlanImarDurumu>(imar);
                    _ilanImarDurumu.Add(imardurumu);
                    await _ilanImarDurumu.SaveChangeAsync();
                }
                #endregion

                return Mapper.Map <IlanIlanlarResponse>(ilanlarIlan);
            }));
        }