예제 #1
0
        private void RaiseExDragOverEvent(DragEventArgs dropArg)
        {
            ExDragEventArgs e = new ExDragEventArgs(dropArg, this);

            e.RoutedEvent = ExDragOverEvent;
            e.Source      = this;
            OnExDragOver(e);
        }
예제 #2
0
        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;
        }
예제 #3
0
 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;
        }
예제 #5
0
        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());
                        }
                    }
                }
            }
        }