Exemple #1
0
        public IActionResult UpdateLine(Guid timecardId,
                                        [FromBody] DocumentLine newLine, Guid lineId)
        {
            logger.LogInformation($"Looking for timesheet {timecardId} , line {lineId} ");

            Timecard timecard = repository.Find(timecardId);

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

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

                var updateLine = timecard.UpdateLine(newLine, lineId);

                repository.Update(timecard);

                return(Ok(updateLine));
            }
            else
            {
                return(NotFound());
            }
        }
        public IActionResult UpdateLine(Guid id, Guid lineID, [FromBody] DocumentLine newline)
        {
            logger.LogInformation($"Looking for timesheet ID {id}");
            Timecard tc = repository.Find(id);

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

            logger.LogInformation($"Looking for timecard line ID {lineID}");

            if (tc.HasLine(lineID))
            {
                var updatedLine = tc.UpdateLine(lineID, newline);
                repository.Update(tc);
                return(Ok(updatedLine));
            }
            else
            {
                return(NotFound());
            }
        }
        public IActionResult UpdateLine(Guid id, Guid line_id, [FromBody] DocumentLine documentLine)
        {
            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.HasLine(documentLine) == false)
                {
                    return(StatusCode(409, new InvalidLineUpdateError()
                    {
                    }));
                }

                var annotatedLine = timecard.UpdateLine(documentLine);

                repository.Update(timecard);

                return(Ok(annotatedLine));
            }
            else
            {
                return(NotFound());
            }
        }
Exemple #4
0
        public IActionResult UpdateLine(string timecardId, int lineId, [FromBody] TimecardLine timecardLine)
        {
            Timecard timecard = Database.Find(timecardId);

            // Verify timecard exists
            if (timecard == null)
            {
                return(NotFound());
            }

            // Verify state allows this action
            if (timecard.Status != TimecardStatus.Draft)
            {
                return(StatusCode(409, new InvalidStateError()
                {
                }));
            }

            // Perform the replacement
            var updatedLine = timecard.UpdateLine(timecardLine, lineId);

            // Verify line was found and patch operation occurred
            if (updatedLine == null)
            {
                return(NotFound());
            }

            return(Ok(updatedLine));
        }
Exemple #5
0
        public IActionResult UpdateLine(string timecardId, string lineId, [FromBody] TimecardLine timecardLine, [ModelBinder] int resource)
        {
            Timecard timecard = Database.Find(timecardId);

            if (timecard == null || !timecard.DoesLineExist(Guid.Parse(lineId)))
            {
                return(NotFound());
            }
            if (timecard.Status != TimecardStatus.Draft)
            {
                return(StatusCode(409, new InvalidStateError()
                {
                }));
            }
            if (resource != timecard.Resource)
            {
                return(StatusCode(409, new InvalidResourceError()
                {
                }));
            }

            var updatedLine = timecard.UpdateLine(Guid.Parse(lineId), timecardLine);

            return(Ok(updatedLine));
        }
        public IActionResult UpdateLine(string timecardId, string lineId, int resourceID, [FromBody] TimecardLine timecardLine)
        {
            Timecard timecard = Database.Find(timecardId);

            if (timecard == null)
            {
                return(NotFound());
            }
            // checking if resource is authorized
            if (timecard.Resource != resourceID)
            {
                return(StatusCode(409, new InvalidAccessError()
                {
                }));
            }

            //updating/replacing the line entry in timecard
            var annotatedLine = timecard.UpdateLine(lineId, timecardLine);

            if (annotatedLine == null)
            {
                return(NotFound());
            }
            else
            {
                return(Ok(annotatedLine));
            }
        }
        public IActionResult Update(string id, [FromBody] TimecardLine timecardLine, Guid uniqueIdentifier)
        {
            Timecard timecard = Database.Find(id);

            if (timecard != null)
            {
                if (timecard.Resource != timecardLine.Resource)
                {
                    return(StatusCode(408, new InvalidResource()
                    {
                    }));
                }

                if (timecard.Status == TimecardStatus.Draft || timecard.Status == TimecardStatus.Cancelled)
                {
                    var old_line = new AnnotatedTimecardLine(timecard.Lines
                                                             .FirstOrDefault(t => t.UniqueIdentifier == uniqueIdentifier));

                    var annotatedLine = timecard.UpdateLine(old_line, timecardLine, uniqueIdentifier);
                    return(Ok(annotatedLine));
                }
                else
                {
                    return(StatusCode(409, new InvalidStateError()
                    {
                    }));
                }
            }
            else
            {
                return(NotFound());
            }
        }
        public IActionResult UpdateLine(string id, [FromBody] TimecardPatchLine timecardPatchLine)
        {
            Timecard timecard = Database.Find(id);

            //  Microsoft.AspNetCore.JsonPatch.JsonPatchDocument<TimecardPatchLine> patchDoc = new Microsoft.AspNetCore.JsonPatch.JsonPatchDocument<TimecardPatchLine>();
            // patchDoc.ApplyTo(timecardPatchLine);

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

                var annotatedLine = timecard.UpdateLine(timecard, timecardPatchLine);
                if (annotatedLine == null)
                {
                    return(NotFound());
                }
                return(Ok(annotatedLine));
            }
            else
            {
                return(NotFound());
            }
        }
Exemple #9
0
        public IActionResult UpdateLine(Guid id, [FromBody] DocumentLine documentLine, Guid lineId)
        {
            logger.LogInformation($"Looking for timesheet {id} and line {lineId}");

            Timecard timecard = repository.Find(id);

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

                //update line
                if (timecard.HasLine(lineId))
                {
                    var updatedLine = timecard.UpdateLine(documentLine, lineId);
                    repository.Update(timecard);
                    return(Ok(updatedLine));
                }
            }
            return(NotFound());
        }
Exemple #10
0
        public IActionResult UpdateLineItems(string timecardId, string lineId, [FromBody] TimecardLineRequest timecardLine)
        {
            Timecard timecard = Database.Find(timecardId);

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

            if (timecard.Lines != null)
            {
                return(Ok(timecard.UpdateLine(lineId, timecardLine)));
            }

            return(NotFound());
        }
        public IActionResult UpdateLine(string timecardId, string lineId, [FromBody] TimecardLine timecardLine)
        {
            Timecard timecard = Database.Find(timecardId);

            if (timecard == null)
            {
                return(NotFound());
            }
            else if (timecard.Status != TimecardStatus.Draft)
            {
                return(StatusCode(409, new UpdateError()
                {
                }));
            }
            else
            {
                //find the line that matches lineId
                var match = timecard.Lines.FirstOrDefault(x => x.LineNumber.ToString() == lineId);
                if (match != null)
                {
                    timecard.UpdateLine(timecard.Lines.IndexOf(match), timecardLine);
                }
                else
                {
                    return(StatusCode(409, new MissingLineError()
                    {
                    }));
                }
                //FIXME: UpdateLine updates all fields to match those passed into the request, so later versions should
                //          allow for some fields to be left blank. null cases are also not accounted for in this version.
                //          The likely next iteration might include some kind of overloading and/or checking each field
                //          in timecardLine, and flagging (with a -1, perhaps) and checking for that flag upon setting,
                //          where nulls would be flagged as -1 as well, so as not to be updated. Removal of information
                //          is not possible in this scheme.
            }

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

            return(Ok());
        }
Exemple #12
0
        public IActionResult UpdateLine(string timecardId, string lineId, [FromBody] TimecardLine timecardLine)
        {
            Timecard timecard = Database.Find(timecardId);

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

            var annotatedLine = timecard.UpdateLine(lineId, timecardLine);

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

            else
            {
                return(Ok(annotatedLine));
            }
        }
        // replace (POST) a complete line item
        public IActionResult Update(string timecardId, string lineId, [FromBody] TimecardLine timecardLine)
        {
            Timecard timecard = Database.Find(timecardId);

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

            if (timecard.Status != TimecardStatus.Draft)
            {
                return(StatusCode(409, new InvalidStateError()
                {
                }));
            }
            var Guid    = new Guid(lineId);
            var oldLine = timecard.FindLineIndex(Guid);

            var annotatedLine = timecard.UpdateLine(Guid, timecardLine);

            return(Ok(annotatedLine));
        }
Exemple #14
0
        public IActionResult UpdateLine(string id, int ArrayIndex, [FromBody] TimecardLine timecardLine)
        {
            Timecard timecard = Database.Find(id);

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

                var update = timecard.UpdateLine(ArrayIndex, timecardLine);

                return(Ok(update));
            }
            else
            {
                return(NotFound());
            }
        }
        public IActionResult UpdateLine(string timecardId, string lineId,
                                        [FromBody] TimecardLine timecardLine)
        {
            Timecard timecard = Database.Find(timecardId);

            if (timecard == null)
            {
                return(NotFound());
            }
            else
            {
                if (timecard.Status == TimecardStatus.Draft)
                {
                    return(Ok(timecard.UpdateLine(timecardLine, lineId)));
                }
                else
                {
                    return(StatusCode(409, new InvalidStateError()
                    {
                    }));
                }
            }
        }
Exemple #16
0
        public IActionResult UpdateLine(string timecardId, string lineId, [FromBody] TimecardLine timecardLine)
        {
            Timecard timecard = Database.Find(timecardId);

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

                var existingLine = timecard.Lines.Where(t => t.UniqueIdentifier.ToString() == lineId).FirstOrDefault();

                var annotatedLine = timecard.UpdateLine(existingLine, timecardLine);

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