예제 #1
0
        private WebCategoria GetCategoria(WebIscrizioneViewModel viewModel, WebEventoDettaglio dett)
        {
            if (viewModel.DataNascita == null)
                return null;

            var age = dett.Evento.DataEvento.Year - viewModel.DataNascita.GetValueOrDefault(DateTime.MinValue).Year;
            //if (persona.DataNascita > dett.Evento.DataEvento.AddYears(-age)) age--;

            var cat =
                _categoria.GetAll()
                    .FirstOrDefault(
                        x =>
                            x.Disciplina.Id == UserIdDisciplina && x.DaAnni >= age && x.AdAnni <= age &&
                            x.Volontario == dett.Volontari && !x.Obsoleto);

            return cat;
        }
예제 #2
0
        public void UpdateModel(WebIscrizione model, WebIscrizioneViewModel viewModel)
        {
            model.EventoDettaglio = _dettaglio.GetById(viewModel.EventoDettaglioId);
            model.Descrizione = viewModel.Descrizione;

            model.Tessera = _tessera.GetById(viewModel.TesseraId);
            model.Societa = model.Tessera?.Squadra.Societa;
            model.DataIscrizione = viewModel.DataIscrizione ?? DateTime.Now;
            model.IdOperatore = UserIdUtente;
            model.StampaRicevuta = viewModel.StampaRicevuta;
            model.DataSmarcatura = viewModel.DataSmarcatura;

            model.SocietaTesserato = viewModel.SocietaTesserato;
            model.TesseraNumero = viewModel.TesseraNumero;
            model.Nome = viewModel.Nome;
            model.Cognome = viewModel.Cognome;
            model.Indirizzo = viewModel.Indirizzo;
            model.NCivico = viewModel.NCivico;
            model.Localita = viewModel.Localita;
            model.DataNascita = viewModel.DataNascita;
            model.Sesso = viewModel.Sesso;
            model.EMail = viewModel.EMail;
            model.ScadenzaCertificato = viewModel.ScadenzaCertificato;
            model.ConsegnataCopiaCertificato= viewModel.ConsegnataCopiaCertificato;
            model.OrdineArrivo= viewModel.OrdineArrivo;

            if (string.IsNullOrEmpty(viewModel.Id))
            {
                model.IscrittoDaSocieta = UserIsSocieta && model.Societa!=null && UserIdSocieta == model.Societa.Id;
                model.Categoria = GetCategoria(viewModel, model.EventoDettaglio);
            }
        }
예제 #3
0
        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;
        }
예제 #4
0
        public Envelope<WebIscrizioneGridViewModel> Save(WebIscrizioneViewModel viewModel)
        {
            var ret = new Envelope<WebIscrizioneGridViewModel>();
            try
            {
                if (viewModel == null)
                    return ret.SetMessage(HelperApi.Forbidden("Oggetto vuoto"));

                WebIscrizione model;
                if (string.IsNullOrEmpty(viewModel.Id))
                    model = new WebIscrizione();
                else
                {
                    model = RepositoryIscrizioni().SingleOrDefault(x => x.Id == viewModel.Id);
                    if (model == null)
                        return ret.SetMessage(HelperApi.NotFound());
                }
                var validation = Validate(viewModel);
                if (validation.IsError())
                    return ret.SetMessage(validation.Message());

                UpdateModel(model, viewModel);
                _iscrizione.SaveOrUpdate(model);
                return GetElement(model.Id);
            }
            catch (Exception ex)
            {
                return ret.SetMessage(HelperApi.Error("ERRORE:" + ex.Message));
            }
        }
예제 #5
0
        public Envelope<WebIscrizioneGridViewModel> IscriviTessera(WebIscrizioneTesseraViewModel viewModel)
        {
            var ret = new Envelope<WebIscrizioneGridViewModel>();
            try
            {
                if (string.IsNullOrEmpty(viewModel.TesseraNumero) || viewModel.TesseraNumero.Length < UserLenMinTessera)
                    return ret.SetMessage(HelperApi.NotFound("Numero Tessera non trovato"));

                var tessera =
                    _tessera.GetAll()
                        .FirstOrDefault(
                            x => UserAnniValidi.Contains(x.AnnoCompetenza) && x.Descrizione == viewModel.TesseraNumero);

                if (tessera == null) return ret.SetMessage(HelperApi.NotFound("Numero Tessera non trovato"));

                var iscr = new WebIscrizioneViewModel()
                {
                    Descrizione = viewModel.Descrizione,
                    EventoDettaglioId = viewModel.EventoDettaglioId,
                    TesseraId = tessera.Id,
                    DataIscrizione = DateTime.Now,
                    IscrittoDaSocieta = UserIsSocieta,
                    StampaRicevuta = false,
                    DataSmarcatura = null
                };
                return Save(iscr);
            }
            catch (Exception ex)
            {
                return ret.SetMessage(HelperApi.Error("ERRORE:" + ex.Message));
            }
        }
예제 #6
0
        public Envelope<WebIscrizioneViewModel> GetByCardAndDetail(string tesseraNumero, string dettaglioEventoId)
        {
            var ret = new Envelope<WebIscrizioneViewModel>();
            try
            {
                WebIscrizioneViewModel vm = null;
                var iscr = RepositoryIscrizioni()
                    .FirstOrDefault(x => x.Tessera.Descrizione == tesseraNumero && x.EventoDettaglio.Id == dettaglioEventoId);

                if (iscr != null )
                    vm = Mapper.Map<WebIscrizioneViewModel>(iscr);
                else
                {
                    var tessera = _tessera.GetAll().FirstOrDefault(el => el.Descrizione == tesseraNumero && el.Squadra.Disciplina.Id==UserIdDisciplina);
                    if (tessera != null)
                        vm = new WebIscrizioneViewModel
                        {
                            TesseraId = tessera.Id,
                            SocietaTesserato = tessera.Squadra.Societa.Descrizione,
                            TesseraNumero = tessera.Descrizione,
                            Nome = tessera.Persona.Nome,
                            Cognome = tessera.Persona.Cognome,
                            Indirizzo = tessera.Persona.Indirizzo,
                            NCivico = tessera.Persona.NCivico,
                            Cap = tessera.Persona.Cap,
                            Localita = tessera.Persona.Localita,
                            DataNascita = tessera.Persona.DataNascita,
                            Sesso = tessera.Persona.Sesso,
                            EMail = tessera.Persona.EMail,
                            ScadenzaCertificato = tessera.Persona.ScadenzaCertificato,
                        };
                }

                ret.Obj = vm;
                ret.Message = ret.Obj != null ? HelperApi.Ok() : HelperApi.NotFound();
            }
            catch (Exception ex)
            {
                ret.Message = HelperApi.Error("ERRORE:" + ex.Message);
            }
            return ret;
        }
예제 #7
0
 public void UpdateModel(WebIscrizione model, WebIscrizioneViewModel viewModel)
 {
     throw new NotImplementedException();
 }
예제 #8
0
 public Envelope<WebIscrizioneGridViewModel> Save(WebIscrizioneViewModel viewModel)
 {
     throw new NotImplementedException();
 }