public ModelError Validate(WebIscrizioneViewModel viewModel)
        {
            var ret = new ModelError();

            ret.FieldRequired("EventoDettaglioId", viewModel.EventoDettaglioId);
            ret.FieldDate("DataIscrizione", viewModel.DataIscrizione);
            ret.FieldDate("DataSmarcatura", viewModel.DataSmarcatura);

            if (!ret.IsOk()) return ret;

            var dett = _dettaglio.GetById(viewModel.EventoDettaglioId);
            ret.FieldCheck("EventoDettaglioId", "EventoDettaglioId Valore non valido",
                dett == null ||
                dett.Evento.Disciplina.Id != UserIdDisciplina);
            if (dett != null)
                ret.FieldCheck("DataIscrizione", "La data di iscrizione non può essere successiva alla data dell'evento",
                    viewModel.DataIscrizione > dett.Evento.DataEvento);

            if (viewModel.TesseraId.GetValueOrDefault(0) != 0)
            {
                var tessera = _tessera.GetById(viewModel.TesseraId);
                ret.FieldCheck("TesseraId", "Tessera non valida", tessera == null);
                ret.FieldCheck("TesseraId", "Tessera con disciplina non valida",
                    tessera != null && tessera.Squadra.Disciplina.Id != UserIdDisciplina);

                if (tessera != null && dett != null)
                {
                    //COntrolla scadenza certificato solo se evento dettaglio è agonistico
                    ret.FieldCheck("TesseraId", "Certificato scaduto",
                        tessera.Persona.ScadenzaCertificato.GetValueOrDefault(DateTime.MinValue).Date <=
                        dett.Evento.DataEvento.Date);

                    //Verifica se la persona è già iscritta all'evento
                    var cnt = _iscrizione.GetAll() .FirstOrDefault(
                                x => x.Tessera.Persona.Id == tessera.Persona.Id && x.EventoDettaglio.Evento == dett.Evento &&
                                    x.Id != viewModel.Id);

                    ret.FieldCheck("TesseraId", "La persona è già iscritta all'evento", cnt!=null);
                    //FORZA DATI DEL TESSERATO UISP DENTRO L'ISCRIZIONE
                    viewModel.SocietaTesserato = tessera.Squadra.Societa.Descrizione;
                    viewModel.TesseraNumero = tessera.Descrizione;
                    viewModel.Nome = tessera.Persona.Nome;
                    viewModel.Cognome = tessera.Persona.Cognome;
                    viewModel.Indirizzo = tessera.Persona.Indirizzo;
                    viewModel.NCivico = tessera.Persona.NCivico;
                    viewModel.Localita = tessera.Persona.Localita;
                    viewModel.DataNascita = tessera.Persona.DataNascita;
                    viewModel.Sesso = tessera.Persona.Sesso;
                    viewModel.EMail = tessera.Persona.EMail;
                    viewModel.ScadenzaCertificato = tessera.Persona.ScadenzaCertificato;
                }
            }

            if (viewModel.Pettorale != null)
            {
                ret.FieldCheck("Pettorale", "il campo PETTORALE deve essere maggiore di 0", viewModel.Pettorale < 1);
                var cnt = _iscrizione.GetAll().FirstOrDefault(
                            x => x.Pettorale!=null && x.Pettorale==viewModel.Pettorale && x.EventoDettaglio.Evento == dett.Evento &&
                                x.Id != viewModel.Id);

                ret.FieldCheck("Pettorale", "Pettorale già attribuito", cnt != null);
            }

            if (viewModel.OrdineArrivo != null)
            {
                ret.FieldCheck("OrdineArrivo", "il campo ORDINE DI ARRIVO deve essere maggiore di 0", viewModel.OrdineArrivo < 1 );
                var cnt = _iscrizione.GetAll().FirstOrDefault(
                            x => x.Pettorale != null && x.OrdineArrivo == viewModel.OrdineArrivo && x.EventoDettaglio.Evento == dett.Evento &&
                                x.Id != viewModel.Id);

                ret.FieldCheck("OrdineArrivo", "Ordine di Arrivo già attribuito", cnt != null);
            }

            return ret;
        }
Example #2
0
        public ModelError Validate(WebEventoViewModel viewModel)
        {
            var ret = new ModelError();

            ret.FieldRequired("Descrizione", viewModel.Descrizione);
            ret.FieldRequired("Luogo", viewModel.Luogo);
            ret.FieldDate("DataEvento", viewModel.DataEvento );
            return ret;
        }