private void Calendar_AddAppointment(object sender, RoutedEventArgs e) { CalendarTimeslotItem item = e.OriginalSource as CalendarTimeslotItem; if (item != null) { Appointment appointment = new Appointment(); appointment.StartTime = item.StartTime; appointment.EndTime = item.StartTime + TimeSpan.FromMinutes(30); appointment.Subject = "Новая задача"; NewAppointment napp = new NewAppointment(); napp.BuildTimeComboBox(appointment.StartTime, appointment.EndTime); napp.DataContext = appointment; if (napp.ShowDialog() == true) { appointment.StartTime = napp.ComposeStartTime(); appointment.EndTime = napp.ComposeEndTime(); var toRemove = appointments.Where(a => a.RequestId == null).ToList(); foreach (var app in toRemove) { appointments.Remove(app); } appointments.Add(appointment); } } }
public void Drop(ExDragEventArgs arg) { var app = (ScheduleEntryBaseViewModel)arg.DragEventArgs.Data.GetData("myFormat"); var championship = (ChampionshipItem)arg.DragEventArgs.Data.GetData("ChampionshipItem"); var activity = (ActivityDTO)arg.DragEventArgs.Data.GetData("ActivityDTO"); var group = (CustomerGroupDTO)arg.DragEventArgs.Data.GetData("CustomerGroupDTO"); var myPlace = (MyPlaceLightDTO)arg.DragEventArgs.Data.GetData("MyPlaceDTO"); CalendarTimeslotItem emptySlot = arg.DirectTarget as CalendarTimeslotItem; if (emptySlot == null) { return; } ScheduleEntryBaseDTO baseDTO; if (activity != null) { var dto = new ScheduleEntryDTO(); dto.ActivityId = activity.GlobalId; dto.MaxPersons = activity.MaxPersons; dto.Price = activity.Price; dto.StartTime = emptySlot.StartTime.ToUniversalTime(); dto.EndTime = dto.StartTime + activity.Duration; app = createAppointment(dto); baseDTO = dto; } else if (championship != null) { var dto = new ScheduleChampionshipDTO(); dto.StartTime = emptySlot.StartTime.ToUniversalTime(); dto.ChampionshipType = championship.Value; dto.Name = InstructorHelper.Translate(dto.ChampionshipType); dto.EndTime = dto.StartTime + TimeSpan.FromHours(4); app = createAppointment(dto); } else if (group != null) { var dto = new ScheduleEntryDTO(); dto.MaxPersons = group.MaxPersons; dto.StartTime = emptySlot.StartTime.ToUniversalTime(); dto.EndTime = dto.StartTime + TimeSpan.FromHours(1);//default entry length is one hour if (group.DefaultActivityId.HasValue) { activity = ActivitiesReposidory.Instance.GetItem(group.DefaultActivityId.Value); dto.MaxPersons = activity.MaxPersons; dto.ActivityId = activity.GlobalId; dto.Price = activity.Price; dto.EndTime = dto.StartTime + activity.Duration; } dto.CustomerGroupId = group.GlobalId; app = createAppointment(dto); baseDTO = dto; } else if (myPlace != null) { var dto = new ScheduleEntryDTO(); dto.MyPlaceId = myPlace.GlobalId; dto.StartTime = emptySlot.StartTime.ToUniversalTime(); dto.EndTime = dto.StartTime + TimeSpan.FromHours(1);//default entry length is one hour app = createAppointment(dto); baseDTO = dto; } if ((arg.DragEventArgs.KeyStates & DragDropKeyStates.ControlKey) == DragDropKeyStates.ControlKey) { app = app.Clone(true); baseDTO = app.Item; baseDTO.Version = 0; } TimeSpan diff = app.RealEndTime - app.StartTime; app.Item.StartTime = emptySlot.StartTime.ToUniversalTime(); app.Item.EndTime = (app.StartTime + diff).ToUniversalTime(); if (Entries.IndexOf(app) == -1) { Entries.Add(app); } IsModified = true; }