private void RaiseExDragOverEvent(DragEventArgs dropArg) { ExDragEventArgs e = new ExDragEventArgs(dropArg, this); e.RoutedEvent = ExDragOverEvent; e.Source = this; OnExDragOver(e); }
private void monthCalendar1_DragOver(object sender, RoutedEventArgs e) { ExDragEventArgs arg = (ExDragEventArgs)e; DateTime time = (DateTime)arg.DirectTarget.Tag; TrainingDayDTO day = getTrainingDay(time); if (day == null) { if ((arg.DragEventArgs.AllowedEffects & DragDropEffects.Copy) == DragDropEffects.Copy && (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))) { arg.DragEventArgs.Effects = DragDropEffects.Copy; } else if ((arg.DragEventArgs.AllowedEffects & DragDropEffects.Move) == DragDropEffects.Move) { arg.DragEventArgs.Effects = DragDropEffects.Move; } return; } arg.DragEventArgs.Effects = DragDropEffects.None; arg.DragEventArgs.Handled = true; }
protected virtual void OnExDragOver(ExDragEventArgs e) { RaiseEvent(e); }
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; }
private void monthCalendar1_Drop(object sender, RoutedEventArgs e) { ExDragEventArgs arg = (ExDragEventArgs)e; if (arg.DragEventArgs.Data.GetDataPresent("DateTime")) { DateTime date = (DateTime)arg.DragEventArgs.Data.GetData("DateTime"); DateTime targetDate = (DateTime)arg.DirectTarget.Tag; var result = entriesViewer.CalendarControl.GetDateInfo(date); if (result.Count == 1) { var dayInfo = (TrainingDayInfo)result[0]; TrainingDayDTO day = getTrainingDay(date); if (targetDate.IsFuture() && !UIHelper.EnsurePremiumLicence()) { return; } if (Keyboard.IsKeyDown(Key.LeftCtrl)) { dayInfo.IsProcessing = true; ParentWindow.RunAsynchronousOperation(x => { //if (day.GlobalId != Constants.UnsavedGlobalId) //{//user select Cut operation so we should only move this one time (not many time like with Copy operation) // WorkoutDayGetOperation operation = new WorkoutDayGetOperation(); // operation.UserId = User.Id; // operation.Operation = GetOperation.Current; // operation.WorkoutDateTime = day.TrainingDate; // day = ServiceManager.GetTrainingDay(operation); //} try { day = day.Copy(); day.ChangeDate(targetDate); var result1 = ServiceManager.SaveTrainingDay(day); if (result1.TrainingDay != null) { cache.Add(result1.TrainingDay); } } catch (OldDataException ex) { UIHelper.Invoke(() => ExceptionHandler.Default.Process(ex, "ErrorOldTrainingDay".TranslateStrings(), ErrorWindow.MessageBox), Dispatcher); } catch (Exception ex) { UIHelper.Invoke(() => ExceptionHandler.Default.Process(ex, "ErrorMoveTrainingDay".TranslateStrings(), ErrorWindow.EMailReport), Dispatcher); } finally { dayInfo.IsProcessing = false; } }); } else if (BAMessageBox.AskYesNo("QMoveTrainingDay".TranslateStrings()) == MessageBoxResult.Yes) { if (day.CanMove) { dayInfo.IsProcessing = true; ParentWindow.RunAsynchronousOperation(x => { //if (day.GlobalId != Constants.UnsavedGlobalId) //{//user select Cut operation so we should only move this one time (not many time like with Copy operation) // WorkoutDayGetOperation operation = new WorkoutDayGetOperation(); // operation.UserId = User.Id; // operation.Operation = GetOperation.Current; // operation.WorkoutDateTime = day.TrainingDate; // day = ServiceManager.GetTrainingDay(operation); //} try { day = day.StandardClone(); day.ChangeDate(targetDate); var result1 = ServiceManager.SaveTrainingDay(day); cache.Remove(date); if (result1.TrainingDay != null) { day = result1.TrainingDay; cache.Add(day); } } catch (OldDataException ex) { UIHelper.Invoke(() => ExceptionHandler.Default.Process(ex, "ErrorOldTrainingDay".TranslateStrings(), ErrorWindow.MessageBox), Dispatcher); } catch (Exception ex) { UIHelper.Invoke(() => ExceptionHandler.Default.Process(ex, "ErrorMoveTrainingDay".TranslateStrings(), ErrorWindow.EMailReport), Dispatcher); } finally { dayInfo.IsProcessing = false; } }); } else { BAMessageBox.ShowError("ErrorCannotMoveTrainingDayFixedEntries".TranslateStrings()); } } } } }