Пример #1
0
 public async Task <ActionResult> Get([FromQuery] KlijentSearchRequestModel model = null)
 {
     try
     {
         return(Ok(await _userService.GetKlijenti(UserResolver.GetUposlenikId(HttpContext.User), UserResolver.GetUserRoles(HttpContext.User), model)));
     }
     catch (Exception ex)
     {
         return(BadRequest(new ApiException(ex.Message, System.Net.HttpStatusCode.BadRequest)));
     }
 }
Пример #2
0
        private async void btnPrikazi_Click(object sender, EventArgs e)
        {
            var request = new KlijentSearchRequestModel
            {
                Ime     = txtIme.Text,
                Prezime = txtPrezime.Text
            };
            var kursInstancaId = int.Parse(comboKursInstanca.SelectedValue.ToString());

            if (kursInstancaId != 0)
            {
                request.KursInstancaId = kursInstancaId;
            }
            await LoadKlijents(request);
        }
Пример #3
0
        private async Task LoadKlijents(KlijentSearchRequestModel model = null)
        {
            try
            {
                gridKlijenti.RowTemplate.Height = 100;
                var result = await _klijentService.Get <List <KlijentModel> >(model);

                gridKlijenti.DataSource = result;

                gridKlijenti.Columns[nameof(KlijentModel.Id)].Visible                        = false;
                gridKlijenti.Columns[nameof(KlijentModel.KlijentId)].Visible                 = false;
                gridKlijenti.Columns[nameof(KlijentModel.OpcinaId)].Visible                  = false;
                gridKlijenti.Columns[nameof(KlijentModel.UkupnoUplaceno)].HeaderText         = "Ukupno uplaćeno";
                gridKlijenti.Columns[nameof(KlijentModel.OpcinaNaziv)].HeaderText            = "Općina";
                gridKlijenti.Columns[nameof(KlijentModel.DatumRodjenja)].HeaderText          = "Datum Rodjenja";
                gridKlijenti.Columns[nameof(KlijentModel.UkupnoUplaceno)].DisplayIndex       = 8;
                gridKlijenti.Columns[nameof(KlijentModel.ClanarinaAktivna)].HeaderText       = "Članarina aktivna";
                gridKlijenti.Columns[nameof(KlijentModel.ClanarinaAktivna)].DisplayIndex     = 9;
                gridKlijenti.Columns[nameof(KlijentModel.DatumIstekaClanarine)].HeaderText   = "Datum isteka članarine";
                gridKlijenti.Columns[nameof(KlijentModel.DatumIstekaClanarine)].DisplayIndex = 10;

                if (gridKlijenti.Columns["UplataColumn"] == null)
                {
                    DataGridViewButtonColumn uplataButton = new DataGridViewButtonColumn()
                    {
                        Name       = "UplataColumn",
                        HeaderText = "Akcija",
                        Text       = "Dodaj uplatu",
                        UseColumnTextForButtonValue = true
                    };
                    gridKlijenti.CellClick += gridKlijenti_CellClick;
                    gridKlijenti.Columns.Add(uplataButton);
                }
                gridKlijenti.Columns["UplataColumn"].DisplayIndex = 13;
            }
            catch (ApiException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public async Task <List <KlijentModel> > GetKlijenti(int uposlenikId, List <string> roles, KlijentSearchRequestModel model = null)
        {
            try
            {
                var query = _context.Klijent
                            .Include(u => u.ApplicationUser)
                            .ThenInclude(au => au.Opcina)
                            .Include(u => u.KurseviKlijenta)
                            .ThenInclude(k => k.KursInstanca)
                            .AsQueryable();
                if (model != null)
                {
                    if (!string.IsNullOrEmpty(model.Ime))
                    {
                        query = query
                                .Where(u => u.ApplicationUser.Ime.StartsWith(model.Ime));
                    }
                    if (!string.IsNullOrEmpty(model.Prezime))
                    {
                        query = query
                                .Where(u => u.ApplicationUser.Prezime.StartsWith(model.Prezime));
                    }
                }
                var result = await query.ToListAsync();

                bool isAdmin            = roles.Contains("AdministrativnoOsoblje");
                bool isPredavacOnCourse = false;
                if (model?.KursInstancaId != null)
                {
                    isPredavacOnCourse = IsPredavacOnCourse(uposlenikId, (int)model.KursInstancaId);
                }

                var returnModel = new List <KlijentModel>();
                foreach (var r in result)
                {
                    bool passed = false; //zbog uplate da ne ide ponovo trip na db ako sigurno ne treba
                    if (model?.KursInstancaId != null && model?.KursInstancaId != 0)
                    {
                        if ((isAdmin || isPredavacOnCourse) && IsKlijentOnCourse(r, (int)model.KursInstancaId))
                        {
                            passed = true;
                        }
                    }
                    else
                    {
                        if (isAdmin)
                        {
                            passed = true;
                        }
                        else if (IsKlijentOnAnyCourseFromUposlenik(r, uposlenikId))
                        {
                            passed = true;
                        }
                    }

                    if (passed)
                    {
                        var k = MapKlijentToKlijentModel(r);
                        k.UkupnoUplaceno = GetUkupnoUplaceno(k.KlijentId);
                        var clanarinaKlijenta = await _context.Clanarina
                                                .Where(c => c.KlijentId == k.KlijentId)
                                                .OrderByDescending(c => c.Id)
                                                .ToListAsync();

                        if (clanarinaKlijenta.Count == 0 || clanarinaKlijenta[0].DatumIsteka < DateTime.Now)
                        {
                            k.ClanarinaAktivna = "Neaktivna";
                        }
                        else
                        {
                            k.DatumIstekaClanarine = clanarinaKlijenta[0].DatumIsteka;
                            if (clanarinaKlijenta[0].DatumIsteka > DateTime.Now)
                            {
                                k.ClanarinaAktivna = "Aktivna";
                            }
                        }
                        returnModel.Add(k);
                    }
                }

                return(returnModel);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }