comparison Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 185:2d02adb79322

Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio. Se modifica la propiedad Fecha del Evento, renombrandola FechaInicio. En el ModelView se agrega propiedades Duración y Hora del Evento cuando es Modificado, Nuevo y Agendado. Las fechas ingresadas son creadas en sistema UTC Queda pendiente Agregar duración a Google Calendar.
author alabra
date Tue, 09 Aug 2011 01:04:27 -0400
parents 212c664db5aa
children 4d0b2552edb2
comparison
equal deleted inserted replaced
184:2a336a6a76b5 185:2d02adb79322
44 public IEnumerable<Evento> GetHistorico() 44 public IEnumerable<Evento> GetHistorico()
45 { 45 {
46 return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List<Evento>(); 46 return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List<Evento>();
47 } 47 }
48 48
49 public EventoResultado ModificarEvento(Guid eventoId, string titulo, Guid ponenteId, DateTime? fecha, string urlInvitacion) 49 public EventoResultado ModificarEvento(Guid eventoId, string titulo, Guid ponenteId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion)
50 { 50 {
51 Evento evento = GetEvento(eventoId); 51 Evento evento = GetEvento(eventoId);
52 Persona persona = _personaRepository.Get(ponenteId); 52 Persona persona = _personaRepository.Get(ponenteId);
53 53
54 if (evento.Titulo != titulo) 54 if (evento.Titulo != titulo)
55 evento.CambiarTitulo(titulo); 55 evento.CambiarTitulo(titulo);
56 56
57 if (evento.Fecha == null && fecha != null) 57 if (evento.FechaInicio == null && fechaInicio != null && evento.FechaTermino == null && fechaTermino != null)
58 evento.Agendar(persona, fecha, urlInvitacion); 58 evento.Agendar(persona, fechaInicio, fechaTermino, urlInvitacion);
59 else if (evento.Fecha != fecha || evento.Ponente != persona || evento.UrlInvitacion != urlInvitacion) 59 else if (evento.FechaInicio != fechaInicio || evento.Ponente != persona || evento.UrlInvitacion != urlInvitacion ||
60 evento.Actualizar(persona, fecha, urlInvitacion); 60 evento.FechaTermino != fechaTermino)
61 evento.Actualizar(persona, fechaInicio, fechaTermino, urlInvitacion);
61 62
62 Notify(evento); 63 Notify(evento);
63 64
64 var warnings = evento.GetLogsNews().Where(l => !l.Successful); 65 var warnings = evento.GetLogsNews().Where(l => !l.Successful);
65 66
66 return new EventoResultado(true,"Evento modificado", warnings); 67 return new EventoResultado(true,"Evento modificado", warnings);
67 } 68 }
68 69
69 public EventoResultado ModificarPropuesta(Guid id, string titulo, Guid ponenteId, string urlInvitacion) 70 public EventoResultado ModificarPropuesta(Guid id, string titulo, Guid ponenteId, string urlInvitacion)
70 { 71 {
71 return ModificarEvento(id, titulo, ponenteId, null, urlInvitacion); 72 return ModificarEvento(id, titulo, ponenteId, null, null, urlInvitacion);
72 } 73 }
73 74
74 public EventoResultado Proponer(string titulo, Guid? ponenteId, string urlInvitacion, TipoEvento tipo) 75 public EventoResultado Proponer(string titulo, Guid? ponenteId, string urlInvitacion, TipoEvento tipo)
75 { 76 {
76 Persona persona = null; 77 Persona persona = null;
89 var warnings = evento.GetLogsNews().Where(l => !l.Successful); 90 var warnings = evento.GetLogsNews().Where(l => !l.Successful);
90 91
91 return new EventoResultado(true,"Evento propuesto", warnings); 92 return new EventoResultado(true,"Evento propuesto", warnings);
92 } 93 }
93 94
94 public EventoResultado Agendar(string titulo, Guid ponenteId, DateTime? fecha, string urlInvitacion, TipoEvento tipo) 95 public EventoResultado Agendar(string titulo, Guid ponenteId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion, TipoEvento tipo)
95 { 96 {
96 if (!fecha.HasValue) 97 if (!fechaInicio.HasValue)
97 return new EventoResultado(false, "Debe indicar la fecha", null); 98 return new EventoResultado(false, "Debe indicar la fecha", null);
99 if (!fechaTermino.HasValue)
100 return new EventoResultado(false, "Debe indicar la hora y duración", null);
98 101
99 Persona persona = _personaRepository.Get(ponenteId); 102 Persona persona = _personaRepository.Get(ponenteId);
100 if (persona == null) 103 if (persona == null)
101 return new EventoResultado(false, string.Format("No se encontró el ponente indicado ({0})", ponenteId), null); 104 return new EventoResultado(false, string.Format("No se encontró el ponente indicado ({0})", ponenteId), null);
102 105
103 Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); 106 Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo);
104 if (evento == null) 107 if (evento == null)
105 evento = Evento.Agendar(titulo, persona, fecha.Value, urlInvitacion, tipo); 108 evento = Evento.Agendar(titulo, persona, fechaInicio.Value, fechaTermino.Value, urlInvitacion, tipo);
106 else 109 else
107 evento.Agendar(persona, fecha, urlInvitacion); 110 evento.Agendar(persona, fechaInicio, fechaTermino, urlInvitacion);
108 111
109 Notify(evento); 112 Notify(evento);
110 113
111 _eventosRepository.Save(evento); 114 _eventosRepository.Save(evento);
112 115