/// <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); }
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 })); }
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); }
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); } }