Esempio n. 1
0
        public AddWorklogResponse AddWorkLog(AddWorkLogRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            using (var transaction = transactionFactory.GetTransaction())
            {
                var getWorklogResponse = workLogProvider.GetWorkLog(request);
                if (getWorklogResponse?.Success != true)
                {
                    transaction.Rollback();
                    return(GetFailureResponse(getWorklogResponse));
                }

                getWorklogResponse.Ticket.WorkLogs.Add(getWorklogResponse.WorkLog);
                transaction.Commit();

                return(new AddWorklogResponse {
                    Success = true,
                    TicketId = getWorklogResponse.Ticket.GetIdentity(),
                });
            }
        }
Esempio n. 2
0
        public GetWorklogResponse GetWorkLog(AddWorkLogRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            if (request.User == null)
            {
                throw new ArgumentException("User must not be null", nameof(request));
            }

            TimeSpan time;

            try
            {
                time = timespanParser.GetTimeSpan(request.TimeSpent);
            }
            catch (FormatException)
            {
                return(new GetWorklogResponse {
                    Success = false, TimeSpentIsInvalid = true,
                });
            }

            var ticket = ticketProvider.GetTicketByReference(request.TicketReference);

            if (ticket == null)
            {
                return new GetWorklogResponse {
                           Success = false, TicketNotFound = true,
                }
            }
            ;

            var worklog = new TicketWorkLog {
                User        = request.User,
                TimeStarted = request.TimeStarted,
            };

            worklog.SetTimeSpent(time);

            return(new GetWorklogResponse {
                Success = true,
                Ticket = ticket,
                WorkLog = worklog,
            });
        }