コード例 #1
0
ファイル: Peanut.cs プロジェクト: queoGmbH/peanuts
        /// <summary>
        ///     Markiert den Peanut als fixiert.
        /// </summary>
        /// <param name="peanutState">Der neue Status, welchen der Peanut erhalten soll.</param>
        /// <param name="entityChangedDto"></param>
        public virtual void UpdateState(PeanutState peanutState, EntityChangedDto entityChangedDto)
        {
            Require.NotNull(entityChangedDto, "entityChangedDto");

            _peanutState = peanutState;
            Update(entityChangedDto);
        }
コード例 #2
0
ファイル: PeanutController.cs プロジェクト: queoGmbH/peanuts
        public ActionResult UpdateState(Peanut peanut, PeanutState peanutState, User currentUser)
        {
            Require.NotNull(peanut, "peanut");
            Require.NotNull(currentUser, "currentUser");

            string peanutUrl = Url.Action("Show", "Peanut", new { peanut = peanut.BusinessId }, Request.Url.Scheme);
            PeanutUpdateNotificationOptions peanutUpdateNotificationOptions = new PeanutUpdateNotificationOptions(true, peanutUrl);

            PeanutService.UpdateState(peanut, peanutState, peanutUpdateNotificationOptions, currentUser);

            return(RedirectToAction("Show", new { peanut = peanut.BusinessId }));
        }
コード例 #3
0
        public void UpdateState(Peanut peanut, PeanutState peanutState, PeanutUpdateNotificationOptions notificationOptions, User user)
        {
            Require.NotNull(peanut, "peanut");
            Require.NotNull(user, "user");

            if (peanut.PeanutState == peanutState)
            {
                /*Keine Änderung am Status*/
                return;
            }

            if (peanutState >= PeanutState.SchedulingDone && !peanut.IsFixed)
            {
                RemoveParticipations(peanut,
                                     peanut.Participations.Where(s => s.ParticipationState == PeanutParticipationState.Pending)
                                     .Select(s => s.UserGroupMembership)
                                     .ToList(),
                                     user);
            }
            peanut.UpdateState(peanutState, new EntityChangedDto(user, DateTime.Now));
            NotificationService.SendPeanutUpdateStateNotification(peanut, notificationOptions, user);
        }
コード例 #4
0
ファイル: PeanutEditOptions.cs プロジェクト: queoGmbH/peanuts
        public bool CanUpdateStateTo(PeanutState peanutState)
        {
            if (!CanUpdatePeanutState)
            {
                /*Wenn der Status generell nicht geändert werden kann, dann geht sowieso Nichts.*/
                return(false);
            }

            switch (peanutState)
            {
            case PeanutState.Scheduling:
                /*Wenn die Planung als abgeschlossen markiert wurde, aber noch Änderungen notwendig sind*/
                /*Wenn versehentlich auf Beschaffung läuft geklickt wurde*/
                /*Es darf noch keine Rechnung erstellt wurden sein*/
                return((_peanut.PeanutState == PeanutState.PurchasingStarted || _peanut.PeanutState == PeanutState.SchedulingDone || _peanut.PeanutState == PeanutState.Canceled) && !_peanut.IsCleared);

            case PeanutState.SchedulingDone:
                /*Wenn der Peanut in der Planungsphase ist, kann der Status auf Beschaffung läuft gesetzt werden => Standardfall*/
                /*Wenn die Beschaffung (aus Versehen) gestartet wurde, kann diese abgebrochen werden*/
                return(_peanut.PeanutState == PeanutState.Scheduling || _peanut.PeanutState == PeanutState.PurchasingStarted);

            case PeanutState.PurchasingStarted:
                /*Wenn der Peanut in der Planungsphase ist, kann der Status auf Beschaffung läuft gesetzt werden => Standardfall*/
                /*Wenn der Peanut in der Phase "Beschaffung abgeschlossen ist, kann der Status auf Beschaffung läuft gesetzt werden => Irgendwas wurde vergessen"*/
                /*Es darf noch keine Rechnung erstellt wurden sein*/
                return(_peanut.PeanutState == PeanutState.Scheduling || _peanut.PeanutState == PeanutState.SchedulingDone || _peanut.PeanutState == PeanutState.PurchasingDone && !_peanut.IsCleared);

            case PeanutState.PurchasingDone:
                /*Wenn der Peanut in der Phase "Beschaffung läuft ist, kann der Status auf Beschaffung abgeschlossen gesetzt werden => Standardfall"*/
                /*Wenn der Peanut in der Planungsphase ist, kann der Status auf Beschaffung abgeschlossen gesetzt werden => Abkürzung wenn vergessen auf Beschaffung läuft zu setzen*/
                /*Wenn der Peanut in der Phase "Herstellung" ist, kann der Status auf Beschaffung abgeschlossen gesetzt werden => Herstellung wurde abgebrochen/verschoben*/
                /*Es darf noch keine Rechnung erstellt wurden sein*/
                return(_peanut.PeanutState == PeanutState.Scheduling || _peanut.PeanutState == PeanutState.SchedulingDone || _peanut.PeanutState == PeanutState.PurchasingStarted || _peanut.PeanutState == PeanutState.Assembling && !_peanut.IsCleared);

            case PeanutState.Assembling:
                /*Wenn der Peanut in der Phase "Beschaffung abgeschlossen ist, kann der Status auf Beschaffung abgeschlossen gesetzt werden => Standardfall"*/
                /*Wenn der Peanut in der Phase "Beschaffung läuft" ist, kann der Status auf "Herstellung" gesetzt werden => Abkürzung wenn vergessen auf Beschaffung abgeschlossen zu setzen*/
                /*Wenn der Peanut in der Planungsphase ist, kann der Status auf "Herstellung" gesetzt werden => Abkürzung wenn keine Beschaffung notwendig ist*/
                /*Wenn der Peanut in der Phase "Started" ist, kann der Status auf "Herstellung" gesetzt werden => Start wurde abgebrochen/verschoben*/
                return(_peanut.PeanutState == PeanutState.Scheduling || _peanut.PeanutState == PeanutState.SchedulingDone || _peanut.PeanutState == PeanutState.PurchasingStarted || _peanut.PeanutState == PeanutState.PurchasingDone);

            case PeanutState.Started:
                /*Wenn der Peanut in der Phase "Beschaffung abgeschlossen ist, kann der Status auf Beschaffung abgeschlossen gesetzt werden => Standardfall"*/
                /*Wenn der Peanut in der Phase "Beschaffung läuft" ist, kann der Status auf "Herstellung" gesetzt werden => Abkürzung wenn vergessen auf Beschaffung abgeschlossen zu setzen*/
                /*Wenn der Peanut in der Planungsphase ist, kann der Status auf "Herstellung" gesetzt werden => Abkürzung wenn keine Beschaffung notwendig ist*/
                /*Wenn der Peanut in der Phase "Started" ist, kann der Status auf "Herstellung" gesetzt werden => Start wurde abgebrochen/verschoben*/
                return(_peanut.PeanutState == PeanutState.Scheduling || _peanut.PeanutState == PeanutState.SchedulingDone || _peanut.PeanutState == PeanutState.PurchasingDone || _peanut.PeanutState == PeanutState.Assembling);

            case PeanutState.Realized:
                /*Wenn der Peanut in der Phase "Started" ist, kann der Status auf "Durchgeführt" gesetzt werden => Standardfall*/
                /*Wenn der Peanut in der Phase "Herstellung" ist, kann der Status auf Beschaffung abgeschlossen gesetzt werden => Abkürzung wenn Vergessen auf Started zu setzen*/
                return(_peanut.PeanutState == PeanutState.Scheduling || _peanut.PeanutState == PeanutState.SchedulingDone || _peanut.PeanutState == PeanutState.Started || _peanut.PeanutState == PeanutState.Assembling);

            case PeanutState.Canceled:
                /*Wenn der Peanut noch nicht abgerechnet ist und die Beschaffung noch nicht abgeschlossen ist oder mit der Herstellung begonnen wurde, kann der Peanut abgesagt werden.*/
                return(!_peanut.IsCleared && !(_peanut.PeanutState == PeanutState.Started || _peanut.PeanutState == PeanutState.Assembling || _peanut.PeanutState == PeanutState.Realized || _peanut.PeanutState == PeanutState.PurchasingDone));

            default:
                return(false);
            }
        }