private void BtCancel_Click(object sender, RoutedEventArgs e)
        {
            if (CompetitionsToCancel.SelectedItem == null)
            {
                MessageBox.Show(Properties.Resources.NothingSelected);
                return;
            }

            var dev     = CalcularDevolucion();
            var message = Properties.Resources.InscriptionCanceled + " " + dev + "€";
            var index   = CompetitionsToCancel.SelectedIndex;

            if (_status[index] != "REGISTERED")
            {
                message += "(No se había realizado el pago)";
            }
            MessageBox.Show(message);
            _enrollService.UpdateInscriptionStatus(_athlete.Dni, _competition.ID, "CANCELED");
            _enrollService.UpdateRefund(_athlete.Dni, _competition.ID, dev);

            //actualizar la tabla
            GetListCompetition();
        }
예제 #2
0
        private void BtActualizar_Click(object sender, RoutedEventArgs e)
        {
            if (_file == null || _file.Equals(""))
            {
                MessageBox.Show(Properties.Resources.NotSelectedFile);
                return;
            }

            var list = new List <string[]>();

            try {
                list = LeerExtracto(_file);
            }
            catch (ArgumentException) {
                MessageBox.Show(Properties.Resources.EmptyDocument);
                return;
            }

            var extracto = new List <PaymentDto>();

            foreach (var s in list)
            {
                try {
                    var dto = new PaymentDto {
                        Dni    = s[0],
                        Date   = DateTime.Parse(s[1]),
                        Amount = double.Parse(s[2]),
                        Id     = int.Parse(s[3])
                    };
                    extracto.Add(dto);
                }
                catch (Exception) {
                    MessageBox.Show(Properties.Resources.InvalidDocument);
                    return;
                }
            }

            var preregistered = _enrollService.SelectOutstandingAthletes();

            //comprobaciones
            var stringBuilder = new StringBuilder();

            foreach (var payment in extracto)
            {
                var cantidadPagada           = payment.Amount;
                var outstandingInCompetition = false;
                foreach (var prereg in preregistered)
                {
                    if (prereg.Dni.Equals(payment.Dni) && prereg.Id == payment.Id)
                    {
                        outstandingInCompetition = true;
                        var time = payment.Date.Subtract(prereg.Date);
                        if (time.Days <= 2 && cantidadPagada >= prereg.Amount)
                        {
                            _enrollService.UpdateInscriptionStatus(prereg.Dni, prereg.Id, "REGISTERED");
                            stringBuilder.Append("El atleta con dni " + prereg.Dni +
                                                 " ha sido inscrito en la competición con ID " + prereg.Id);
                            if (cantidadPagada > prereg.Amount)
                            {
                                _enrollService.UpdateRefund(prereg.Dni, prereg.Id, prereg.Amount - cantidadPagada);
                                stringBuilder.Append(". Deben devolversele " + (cantidadPagada - prereg.Amount) +
                                                     "€ por abonar una cantidad superior al precio");
                            }

                            stringBuilder.Append(".\n\n");
                        }
                        else
                        {
                            _enrollService.UpdateInscriptionStatus(prereg.Dni, prereg.Id, "CANCELED");
                            _enrollService.UpdateRefund(prereg.Dni, prereg.Id, cantidadPagada);
                            stringBuilder.Append("El atleta con dni " + prereg.Dni +
                                                 " no ha realizado un pago válido para la competición con ID " +
                                                 prereg.Id +
                                                 ". Deben devolversele " + cantidadPagada + "€.\n\n");
                        }
                    }
                }

                if (!outstandingInCompetition)
                {
                    stringBuilder.Append("El atleta con dni " + payment.Dni +
                                         " no tenía un pago pendiente en la competición para la que ha realizado el pago. Deben devolversele " +
                                         cantidadPagada + "€.\n\n");
                }
            }

            TxActualizado.Text = stringBuilder.ToString();
        }