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(), }); } }
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, }); }