Ejemplo n.º 1
0
        public IActionResult Delete(Guid id, [FromBody] Deletion deletion)
        {
            logger.LogInformation($"Looking for timesheet {id}");

            Timecard timecard = repository.Find(id);

            if (timecard == null)
            {
                return(NotFound());
            }

            if (timecard.CanBeDeleted() == false)
            {
                return(StatusCode(409, new InvalidStateError()
                {
                }));
            }

            if (!timecard.IsPermitted(deletion))
            {
                return(StatusCode(409, new InvalidPersonError()
                {
                }));
            }

            var transition = new Transition(deletion, TimecardStatus.Deleted);

            logger.LogInformation($"Adding deletion transition {transition}");

            timecard.Transitions.Add(transition);

            repository.Delete(id);

            return(Ok(transition));
        }
Ejemplo n.º 2
0
        public IActionResult Submit(Guid id, [FromBody] Submittal submittal)
        {
            logger.LogInformation($"Looking for timesheet {id}");

            Timecard timecard = repository.Find(id);

            if (timecard != null)
            {
                if (timecard.Status != TimecardStatus.Draft)
                {
                    return(StatusCode(409, new InvalidStateError()
                    {
                    }));
                }

                if (timecard.Lines.Count < 1)
                {
                    return(StatusCode(409, new EmptyTimecardError()
                    {
                    }));
                }

                if (!timecard.IsPermitted(submittal))
                {
                    return(StatusCode(409, new InvalidPersonError()
                    {
                    }));
                }

                var transition = new Transition(submittal, TimecardStatus.Submitted);

                logger.LogInformation($"Adding submittal {transition}");

                timecard.Transitions.Add(transition);

                repository.Update(timecard);

                return(Ok(transition));
            }
            else
            {
                return(NotFound());
            }
        }
Ejemplo n.º 3
0
        public IActionResult Cancel(Guid id, [FromBody] Cancellation cancellation)
        {
            logger.LogInformation($"Looking for timesheet {id}");

            Timecard timecard = repository.Find(id);

            if (timecard != null)
            {
                if (timecard.Status != TimecardStatus.Draft && timecard.Status != TimecardStatus.Submitted)
                {
                    return(StatusCode(409, new InvalidStateError()
                    {
                    }));
                }

                if (!timecard.IsPermitted(cancellation))
                {
                    return(StatusCode(409, new InvalidPersonError()
                    {
                    }));
                }


                var transition = new Transition(cancellation, TimecardStatus.Cancelled);

                logger.LogInformation($"Adding cancellation transition {transition}");

                timecard.Transitions.Add(transition);

                repository.Update(timecard);

                return(Ok(transition));
            }
            else
            {
                return(NotFound());
            }
        }