コード例 #1
0
        private async void BtnTrazi_Click(object sender, EventArgs e)
        {
            DateTime dt;

            if (cbSviDatumi.Checked)
            {
                dt = DateTime.MinValue;
            }
            else
            {
                dt = dtpDatumTreninga.Value;
            }


            var search = new TreningSearchRequest()
            {
                TipTreningaID = Convert.ToInt32(cbTipTreninga.SelectedValue),
                DatumTreninga = dt,
                TrenerID      = _trener.Id
            };


            var treninzi = await _apiService.Get <List <Model.Trening> >(search);

            dgvTreninzi.DataSource = treninzi;

            foreach (DataGridViewRow row in dgvTreninzi.Rows)
            {
                Model.Trening obj = (Model.Trening)row.DataBoundItem;
                row.Cells[1].Value = obj.TipTreninga.TipTreninga1;
            }
        }
コード例 #2
0
        private async void VecPostojiTrening(object sender, TreningSearchRequest TreningSearch, CancelEventArgs e)
        {
            var treningList = await _apiService_Trening.Get <List <Model.Trening> >(TreningSearch);

            if (_id != null)
            {
                //var tr =await _apiService_Trening.GetById<Model.Trening>(_id);
                treningList = treningList.Where(t => t.Id != _id).ToList();
            }

            if (treningList.Count != 0)
            {
                var trening = treningList[0];
                e.Cancel = true;
                var ele = (DateTimePicker)sender;


                epTreningDetalji.SetError(ele, "Vec postoji trening u intervalu  -> " + trening.VrijemePocetak.ToShortTimeString() + " - " + trening.VrijemeKraj.ToShortTimeString());
                btnSnimi.Enabled = false;
            }
            else
            {
                e.Cancel = false;
                epTreningDetalji.SetError(dtpPocetak, null);
                epTreningDetalji.SetError(dtpKraj, null);
                btnSnimi.Enabled = true;
            }
        }
コード例 #3
0
        private async void BtnTrazi_Click(object sender, EventArgs e)
        {
            DateTime dt;

            if (cbSviDatumi.Checked)
            {
                dt = DateTime.MinValue;
            }
            else
            {
                dt = dtpDatumTreninga.Value;
            }


            var search = new TreningSearchRequest()
            {
                TipTreningaID = Convert.ToInt32(cbTipTreninga.SelectedValue),
                DatumTreninga = dt,
                TrenerID      = _trener.Id,
                MaksimalnoPristunihManjeOd = (int)numMaksimalnoPrisutnihManjeOd.Value,
                MaksimalnoPristunihVeceOd  = (int)numMaksimalnoPrisutnihVeceOd.Value,
            };

            if ((string)cbOdrzan.SelectedValue == "svi")
            {
                search.Odrzan = null;
            }
            if ((string)cbOdrzan.SelectedValue == "odrzani")
            {
                search.Odrzan = true;
            }
            if ((string)cbOdrzan.SelectedValue == "ne odrzani")
            {
                search.Odrzan = false;
            }


            var treninzi = await _apiService.Get <List <Model.Trening> >(search);

            treninzi = treninzi.OrderByDescending(t => t.Odrzan).ToList();
            dgvTreninzi.DataSource = treninzi;

            foreach (DataGridViewRow row in dgvTreninzi.Rows)
            {
                Model.Trening obj = (Model.Trening)row.DataBoundItem;
                row.Cells[1].Value = obj.TipTreninga.TipTreninga1;
                if (obj.Odrzan == false || obj.Odrzan == null)
                {
                    row.Cells[10].Value = "false";
                }
                else
                {
                    row.Cells[10].Value = "true";
                }
            }
        }
コード例 #4
0
        private async void FrmTrening_Load(object sender, EventArgs e)
        {
            var search = new TreningSearchRequest()
            {
                TipTreningaID = 0,
                DatumTreninga = DateTime.MinValue,
                TrenerID      = _trener.Id
            };

            var treninzi = await _apiService.Get <List <Model.Trening> >(search);

            treninzi = treninzi.OrderByDescending(t => t.Odrzan).ToList();
            dgvTreninzi.DataSource = treninzi;

            foreach (DataGridViewRow row in dgvTreninzi.Rows)
            {
                Model.Trening obj = (Model.Trening)row.DataBoundItem;
                row.Cells[1].Value = obj.TipTreninga.TipTreninga1;
                if (obj.Odrzan == false || obj.Odrzan == null)
                {
                    row.Cells[10].Value = "false";
                }
                else
                {
                    row.Cells[10].Value = "true";
                }
            }

            //---------------------------------------------------
            Model.TipTreninga svi = new Model.TipTreninga()
            {
                Id           = 0,
                TipTreninga1 = "svi",
            };
            cbTipTreninga.Text = "svi";

            var TipTreninga = await _apiService_TipTreninga.Get <List <Model.TipTreninga> >(null);

            TipTreninga.Insert(0, svi);
            cbTipTreninga.DataSource    = TipTreninga;
            cbTipTreninga.DisplayMember = "TipTreninga1";
            cbTipTreninga.ValueMember   = "id";
            cbTipTreninga.SelectedValue = svi.Id;
            cbTipTreninga.DropDownStyle = ComboBoxStyle.DropDownList;
            //---------------------------------------------------
            dtpDatumTreninga.Enabled = false;
            cbSviDatumi.Checked      = true;
            //---------------------------------------------------
            List <string> Odrzan = new List <string>();

            Odrzan.Add("svi");
            Odrzan.Add("odrzani");
            Odrzan.Add("ne odrzani");
            cbOdrzan.DataSource    = Odrzan;
            cbOdrzan.DropDownStyle = ComboBoxStyle.DropDownList;
        }
コード例 #5
0
        private async Task <bool> VecPostojiTrening(object sender, TreningSearchRequest TreningSearch)
        {
            var treningList = await _apiService_Trening.Get <List <Model.Trening> >(TreningSearch);

            if (_id != null)
            {
                //var tr =await _apiService_Trening.GetById<Model.Trening>(_id);
                treningList = treningList.Where(t => t.Id != _id).ToList();
            }

            if (treningList.Count != 0)
            {
                MessageBox.Show("Vec ste dodali trening u datom terminu!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                return(true);
            }
            return(false);
        }
コード例 #6
0
        private void DtpKraj_Validating(object sender, CancelEventArgs e)
        {
            var TreningSearch = new TreningSearchRequest()
            {
                TipTreningaID = 0,
                TrenerID      = _trener.Id
            };
            var datumTreninga  = dtpDatumTreninga.Value;
            var vrijemePocetak = dtpPocetak.Value;
            var vrijemeKraj    = dtpKraj.Value;

            TreningSearch.DatumTreninga  = new DateTime(datumTreninga.Year, datumTreninga.Month, datumTreninga.Day, 0, 0, 0, 0);
            TreningSearch.VrijemePocetak = new DateTime(datumTreninga.Year, datumTreninga.Month, datumTreninga.Day, vrijemePocetak.Hour, vrijemePocetak.Minute, 0, 0);
            TreningSearch.VrijemeKraj    = new DateTime(datumTreninga.Year, datumTreninga.Month, datumTreninga.Day, vrijemeKraj.Hour, vrijemeKraj.Minute, 0, 0);
            VecPostojiTrening(sender, TreningSearch, e);
            //DatumVeciOd(dtpPocetak.Value, dtpKraj.Value, e);
        }
コード例 #7
0
        public List <Model.Trening> Get(TreningSearchRequest request)
        {
            var query = _context.Trening
                        .Include(t => t.TipTreninga)
                        .Include(t => t.Trener)
                        .ThenInclude(t => t.Radnik)
                        .ThenInclude(t => t.Osoba)
                        .OrderBy(t => t.Odrzan)
                        .AsQueryable();

            if (request != null)
            {
                //sa ovim if-om provjeravamo ima li treninga sa zeljenim terminom..
                if (request.TrenerID != null && request.VrijemePocetak != null && request.VrijemeKraj != null && request.DatumTreninga != null)
                {
                    query = query.Where(q => q.TrenerId == request.TrenerID);

                    query = query.Where(q => q.DatumTreninga.ToShortDateString() == request.DatumTreninga.ToShortDateString());
                    query = query.Where(q => (q.VrijemePocetak <= request.VrijemePocetak && q.VrijemeKraj >= request.VrijemePocetak) ||
                                        (request.VrijemeKraj >= q.VrijemePocetak && request.VrijemeKraj <= q.VrijemeKraj) ||
                                        (q.VrijemePocetak <= request.VrijemePocetak && q.VrijemeKraj >= request.VrijemeKraj));
                }
                else
                {
                    if (request.TipTreningaID != 0)
                    {
                        query = query.Where(q => q.TipTreningaId == request.TipTreningaID);
                    }
                    if (request.DatumTreninga.ToShortDateString() != DateTime.MinValue.ToShortDateString())
                    {
                        query = query.Where(q => q.DatumTreninga.ToShortDateString() == request.DatumTreninga.ToShortDateString());
                    }
                    if (request.TrenerID != null)
                    {
                        query = query.Where(q => q.TrenerId == request.TrenerID);
                    }
                }
            }
            var list = query.ToList();

            return(_mapper.Map <List <Model.Trening> >(list));
        }
コード例 #8
0
        private async void FrmTrening_Load(object sender, EventArgs e)
        {
            var search = new TreningSearchRequest()
            {
                TipTreningaID = 0,
                DatumTreninga = DateTime.MinValue,
                TrenerID      = _trener.Id
            };

            var treninzi = await _apiService.Get <List <Model.Trening> >(search);

            dgvTreninzi.DataSource = treninzi;

            foreach (DataGridViewRow row in dgvTreninzi.Rows)
            {
                Model.Trening obj = (Model.Trening)row.DataBoundItem;
                row.Cells[1].Value = obj.TipTreninga.TipTreninga1;
            }

            //---------------------------------------------------
            Model.TipTreninga svi = new Model.TipTreninga()
            {
                Id           = 0,
                TipTreninga1 = "svi",
            };
            cbTipTreninga.Text = "svi";

            var TipTreninga = await _apiService_TipTreninga.Get <List <Model.TipTreninga> >(null);

            TipTreninga.Insert(0, svi);
            cbTipTreninga.DataSource    = TipTreninga;
            cbTipTreninga.DisplayMember = "TipTreninga1";
            cbTipTreninga.ValueMember   = "id";
            cbTipTreninga.SelectedValue = svi.Id;
            //---------------------------------------------------
            dtpDatumTreninga.Enabled = false;
            cbSviDatumi.Checked      = true;
        }
コード例 #9
0
 public ActionResult <List <Model.Trening> > Get([FromQuery] TreningSearchRequest request)
 {
     return(_service.Get(request));
 }
コード例 #10
0
        private async void BtnSnimi_Click(object sender, EventArgs e)
        {
            if (this.ValidateChildren())
            {
                #region validateTime
                if (pocetakVeciOdKraja(dtpPocetak.Value, dtpKraj.Value))
                {
                    return;
                }



                var TreningSearch = new TreningSearchRequest()
                {
                    TipTreningaID = 0,
                    TrenerID      = _trener.Id
                };
                var datumTreninga  = dtpDatumTreninga.Value;
                var vrijemePocetak = dtpPocetak.Value;
                var vrijemeKraj    = dtpKraj.Value;
                TreningSearch.DatumTreninga  = new DateTime(datumTreninga.Year, datumTreninga.Month, datumTreninga.Day, 0, 0, 0, 0);
                TreningSearch.VrijemePocetak = new DateTime(datumTreninga.Year, datumTreninga.Month, datumTreninga.Day, vrijemePocetak.Hour, vrijemePocetak.Minute, 0, 0);
                TreningSearch.VrijemeKraj    = new DateTime(datumTreninga.Year, datumTreninga.Month, datumTreninga.Day, vrijemeKraj.Hour, vrijemeKraj.Minute, 0, 0);
                var vecPostoji = await VecPostojiTrening(sender, TreningSearch);

                if (vecPostoji == true)
                {
                    return;
                }



                #endregion validateTime



                if (cbTipTreninga.Items.Count <= 0)
                {
                    MessageBox.Show("Za dodavanje/uredivanje treninga potrebno je imati tipove treninga!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                    return;
                }

                var request = new TreningInsertRequest()
                {
                    TipTreningaId       = Convert.ToInt32(cbTipTreninga.SelectedValue),
                    DatumTreninga       = new DateTime(dtpDatumTreninga.Value.Year, dtpDatumTreninga.Value.Month, dtpDatumTreninga.Value.Day, 0, 0, 0, 0),
                    VrijemePocetak      = new DateTime(dtpDatumTreninga.Value.Year, dtpDatumTreninga.Value.Month, dtpDatumTreninga.Value.Day, dtpPocetak.Value.Hour, dtpPocetak.Value.Minute, 0, 0),
                    VrijemeKraj         = new DateTime(dtpDatumTreninga.Value.Year, dtpDatumTreninga.Value.Month, dtpDatumTreninga.Value.Day, dtpKraj.Value.Hour, dtpKraj.Value.Minute, 0, 0),
                    MaksimalnoPrisutnih = int.Parse(txtMaxPrisutnih.Text),
                    TrenerId            = _trener.Id,
                };

                if (_id.HasValue)
                {
                    //request.Id = Convert.ToInt32(_id);
                    await _apiService_Trening.Update <Model.Trening>(_id, request);

                    this.Close();
                    MessageBox.Show("Uspješna promjena!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                }
                else
                {
                    await _apiService_Trening.Insert <Model.Trening>(request);

                    this.Close();
                    MessageBox.Show("Uspješna ste dodali novi trening!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                }
            }
        }
コード例 #11
0
        public async Task Init()
        {
            int ClanId = _clan.Id;


            var search = new TreningSearchRequest()
            {
                DatumTreninga = DateTime.MinValue,
                TipTreningaID = 0
            };

            search.TipTreningaID = SelectedTipTreninga.Id;


            var list = await _apiService.Get <List <Model.Trening> >(search);

            Trening.Clear();

            //-----------------------------------------------------------------------------------------------

            for (int i = 0; i < list.Count; i++)
            {
                Model.Trening x = list[i];

                //var trenutnoPrisutnih =await _apiService_ClanPrisustvo.Get<List<Model.ClanPrisustvo>>();
                var trenutnoPrisutnih = AsyncHelpers.RunSync <List <Wellness.Model.ClanPrisustvo> >(() => _apiService_ClanPrisustvo.Get <List <Model.ClanPrisustvo> >(new ClanPrisustvoSearchRequest()
                {
                    TreningId = x.Id
                }));

                var treningModel = new Wellness.Mobile.Models.TreningModel()
                {
                    Id                = x.Id,
                    DatumTreninga     = x.DatumTreninga.ToString("dd.MM.yyyy"),
                    pocetak           = x.VrijemePocetak,
                    kraj              = x.VrijemeKraj,
                    MaxPrisutnih      = x.MaksimalnoPrisutnih,
                    Trener            = x.Trener.Radnik.Osoba.Ime + " " + x.Trener.Radnik.Osoba.Prezime,
                    TipTreninga       = x.TipTreninga.TipTreninga1,
                    ClanId            = ClanId,
                    TrenutnoPrisutnih = trenutnoPrisutnih.Count,
                    Odrzan            = x.Odrzan,
                    Image             = x.TipTreninga.Image
                };


                var prisustvo = AsyncHelpers.RunSync <List <Wellness.Model.ClanPrisustvo> >(() => _apiService_ClanPrisustvo.Get <List <Model.ClanPrisustvo> >(new ClanPrisustvoSearchRequest()
                {
                    TreningId = x.Id, ClanId = ClanId
                }));


                if (prisustvo.Count > 0 && (selectedSearchFilter == "Svi" || selectedSearchFilter == "Prijavljeni"))
                {
                    treningModel.ClanPrisustvovaoTreningu = prisustvo[0].Prisustvovao;
                    treningModel._Prisustvuje             = true;
                    treningModel.PrisustvoId = prisustvo[0].Id;
                    if (prisustvo[0].Ocjena != null)
                    {
                        treningModel._Ocjena  = (int)prisustvo[0].Ocjena;
                        treningModel.Ocjenjen = true;
                    }
                    else
                    {
                        treningModel._Ocjena  = 0;
                        treningModel.Ocjenjen = false;
                    }
                    Trening.Add(treningModel);
                }
                else
                {
                    if (prisustvo.Count == 0 && (selectedSearchFilter == "Svi" || selectedSearchFilter == "Ne prijavljeni"))
                    {
                        treningModel.ClanPrisustvovaoTreningu = false;
                        treningModel._Prisustvuje             = false;
                        treningModel.Ocjenjen    = false;
                        treningModel.PrisustvoId = 0;
                        treningModel._Ocjena     = 0;
                        Trening.Add(treningModel);
                    }
                }
            }
        }
コード例 #12
0
        public List <Model.Trening> Get(TreningSearchRequest request)
        {
            var query = _context.Trening
                        .Include(t => t.TipTreninga)
                        .Include(t => t.Trener)
                        .ThenInclude(t => t.Radnik)
                        .ThenInclude(t => t.Osoba)
                        .OrderBy(t => t.Odrzan)
                        .AsQueryable();

            if (request != null)
            {
                //sa ovim if-om provjeravamo ima li treninga sa zeljenim terminom..
                if (request.TrenerID != null && request.VrijemePocetak != null && request.VrijemeKraj != null && request.DatumTreninga != null)
                {
                    query = query.Where(q => q.TrenerId == request.TrenerID);

                    query = query.Where(q => q.DatumTreninga.ToShortDateString() == request.DatumTreninga.ToShortDateString());
                    query = query.Where(q =>
                                        (request.VrijemeKraj >= q.VrijemeKraj && request.VrijemeKraj >= q.VrijemeKraj) ||//POCETAK UNUTAR
                                        (request.VrijemePocetak >= q.VrijemePocetak && request.VrijemePocetak >= q.VrijemePocetak) ||//POCETAK UNUTAR
                                        (request.VrijemePocetak <= q.VrijemePocetak && request.VrijemeKraj >= q.VrijemeKraj) ||//pocetak prije treninga kraj je poslije   OKOLO
                                        (request.VrijemePocetak >= q.VrijemePocetak && request.VrijemeKraj <= q.VrijemeKraj)); //pocetak unutar i kraj unutar treninnn UNUTAR



                    //(q.VrijemePocetak <= request.VrijemePocetak && q.VrijemeKraj >= request.VrijemePocetak)// pocetak prije treningaj, kraj je unutar treninga
                    //    || (request.VrijemeKraj >= q.VrijemePocetak && request.VrijemeKraj <= q.VrijemeKraj)//kraj je unutar treninga
                }
                else
                {
                    if (request.TipTreningaID != 0)
                    {
                        query = query.Where(q => q.TipTreningaId == request.TipTreningaID);
                    }
                    if (request.DatumTreninga.ToShortDateString() != DateTime.MinValue.ToShortDateString())
                    {
                        query = query.Where(q => q.DatumTreninga.ToShortDateString() == request.DatumTreninga.ToShortDateString());
                    }
                    if (request.TrenerID != null)
                    {
                        query = query.Where(q => q.TrenerId == request.TrenerID);
                    }
                    if (request.MaksimalnoPristunihManjeOd != 0)
                    {
                        query = query.Where(q => q.MaksimalnoPrisutnih < request.MaksimalnoPristunihManjeOd);
                    }
                    if (request.MaksimalnoPristunihVeceOd != 0)
                    {
                        query = query.Where(q => q.MaksimalnoPrisutnih > request.MaksimalnoPristunihVeceOd);
                    }
                    if (request.Odrzan == true)
                    {
                        query = query.Where(q => q.Odrzan == request.Odrzan);
                    }
                    if (request.Odrzan == false)
                    {
                        query = query.Where(q => q.Odrzan == false || q.Odrzan == null);
                    }
                }
            }
            var list = query.ToList();

            return(_mapper.Map <List <Model.Trening> >(list));
        }
コード例 #13
0
        public async Task Init()
        {
            int ClanId = _clan.Id;


            var search = new TreningSearchRequest()
            {
                DatumTreninga = DateTime.MinValue,
                TipTreningaID = 0
            };

            search.TipTreningaID = SelectedTipTreninga.Id;


            var list = await _apiService.Get <List <Wellness.Model.Trening> >(search);


            //filter if historyOnly = true
            //u toDeleteList se nalaze treninga koji nisu odrzani
            var newList = new List <Wellness.Model.Trening>();

            if (_historyOnly == true)
            {
                //uklanjamo treninge koji se nisu odrzali
                for (int i = 0; i < list.Count; i++)
                {
                    if (list[i].Odrzan == null)
                    {
                        list[i].Odrzan = false;
                    }
                    Wellness.Model.Trening x = list[i];

                    if (x.Odrzan == true)
                    {
                        //clan je prisustvovo treninug x
                        var prisustvoList = AsyncHelpers.RunSync <List <Wellness.Model.ClanPrisustvo> >(() => _apiService_ClanPrisustvo.Get <List <Wellness.Model.ClanPrisustvo> >(new ClanPrisustvoSearchRequest()
                        {
                            TreningId = x.Id, ClanId = ClanId
                        }));
                        //ako _clan nije prosustvovo treningu x izbacujemo x iz liste
                        if (prisustvoList.Count > 0)
                        {
                            newList.Add(list[i]);
                        }
                    }
                }


                list = newList;
            }
            else
            {
                newList = list.Where(p => p.Odrzan == false || p.Odrzan == null).ToList();
                list    = newList;

                foreach (var x in list)
                {
                    if (x.Odrzan == null)
                    {
                        x.Odrzan = false;
                    }
                }
            }

            //-----------------------------------------------------------------------------------------------
            Trening.Clear();
            for (int i = 0; i < list.Count; i++)
            {
                Wellness.Model.Trening x = list[i];

                //var trenutnoPrisutnih =await _apiService_ClanPrisustvo.Get<List<Model.ClanPrisustvo>>();
                var trenutnoPrisutnih = AsyncHelpers.RunSync <List <Wellness.Model.ClanPrisustvo> >(() => _apiService_ClanPrisustvo.Get <List <Wellness.Model.ClanPrisustvo> >(new ClanPrisustvoSearchRequest()
                {
                    TreningId = x.Id
                }));

                var treningModel = new Mobile.Models.TreningModel()
                {
                    Id                = x.Id,
                    DatumT            = x.DatumTreninga,
                    DatumTreninga     = x.DatumTreninga.ToString("dd.MM.yyyy"),
                    pocetak           = x.VrijemePocetak,
                    kraj              = x.VrijemeKraj,
                    MaxPrisutnih      = x.MaksimalnoPrisutnih,
                    Trener            = x.Trener.Radnik.Osoba.Ime + " " + x.Trener.Radnik.Osoba.Prezime,
                    TipTreninga       = x.TipTreninga.TipTreninga1,
                    ClanId            = ClanId,
                    TrenutnoPrisutnih = trenutnoPrisutnih.Count,
                    Odrzan            = x.Odrzan,
                    Image             = x.TipTreninga.Image
                };

                var prisustvo = AsyncHelpers.RunSync <List <Wellness.Model.ClanPrisustvo> >(() => _apiService_ClanPrisustvo.Get <List <Wellness.Model.ClanPrisustvo> >(new ClanPrisustvoSearchRequest()
                {
                    TreningId = x.Id, ClanId = ClanId
                }));

                if (prisustvo.Count > 0 && (selectedSearchFilter == "Svi" || selectedSearchFilter == "Prijavljeni"))
                {
                    treningModel.ClanPrisustvovaoTreningu = prisustvo[0].Prisustvovao;
                    treningModel._Prisustvuje             = true;
                    treningModel.PrisustvoId = prisustvo[0].Id;
                    if (prisustvo[0].Ocjena != null)
                    {
                        treningModel._Ocjena  = (int)prisustvo[0].Ocjena;
                        treningModel.Ocjenjen = true;
                    }
                    else
                    {
                        treningModel._Ocjena  = 0;
                        treningModel.Ocjenjen = false;
                    }
                    Trening.Add(treningModel);
                }
                else
                {
                    if (prisustvo.Count == 0 && (selectedSearchFilter == "Svi" || selectedSearchFilter == "Ne prijavljeni"))
                    {
                        treningModel.ClanPrisustvovaoTreningu = false;
                        treningModel._Prisustvuje             = false;
                        treningModel.Ocjenjen    = false;
                        treningModel.PrisustvoId = 0;
                        treningModel._Ocjena     = 0;
                        Trening.Add(treningModel);
                    }
                }
            }
        }