List <TheoreticalRelationship> GetAddedRelationships(IIdentity <Ticket> editedTicketIdentity, IEnumerable <AddRelationshipRequest> added)
        {
            if (added == null || !added.Any())
            {
                return(new List <TheoreticalRelationship>());
            }

            return(added
                   .Where(x => !ReferenceEquals(x.RelationshipId, null))
                   .Select(add => new {
                relatedTicket = ticketProvider.GetTicketByReference(add.RelatedTicketReference),
                relatedIsPrimary = add.ParticipationType == RelationshipParticipant.Secondary,
                relationshipType = data.Get(add.RelationshipId)
            })
                   .Where(x => x.relatedTicket != null)
                   .Select(x => {
                logger.Debug($"{nameof(GetAddedRelationships)} found added relationship {x.relationshipType}");

                return new TheoreticalRelationship {
                    Relationship = x.relationshipType,
                    PrimaryTicket = x.relatedIsPrimary? x.relatedTicket.GetIdentity() : editedTicketIdentity,
                    SecondaryTicket = x.relatedIsPrimary ? editedTicketIdentity : x.relatedTicket.GetIdentity(),
                    Type = TheoreticalRelationshipType.Added,
                };
            })
                   .ToList());
        }
Пример #2
0
        public TicketRelationship CreateTicketRelationship(IIdentity <Relationship> relationshipId,
                                                           TicketReference relatedTicketReference,
                                                           RelationshipParticipant participationType)
        {
            if (relationshipId == null || relatedTicketReference == null || !participationType.IsDefinedValue())
            {
                return(null);
            }

            var relatedTicket = ticketQuery.GetTicketByReference(relatedTicketReference);

            if (relatedTicket == null)
            {
                return(null);
            }

            var relationship = new TicketRelationship {
                Relationship = data.Theorise(relationshipId),
            };

            if (participationType == RelationshipParticipant.Primary)
            {
                relationship.SecondaryTicket = relatedTicket;
            }

            if (participationType == RelationshipParticipant.Secondary)
            {
                relationship.PrimaryTicket = relatedTicket;
            }

            return(relationship);
        }
Пример #3
0
 Ticket GetTicket(TicketReference reference)
 {
     if (reference == null)
     {
         return(null);
     }
     return(ticketProvider.GetTicketByReference(reference));
 }
Пример #4
0
        public ActionResult Edit(TicketReference id)
        {
            var ticket = ticketProvider.GetTicketByReference(id);

            if (ReferenceEquals(ticket, null))
            {
                logger.DebugFormat("Ticket reference (to edit) not found: {0}", id);
                return(HttpNotFound());
            }

            var editModelFactory = editTicketModelFactory.Value;
            var model            = editModelFactory.GetEditTicketModel(ticket);

            return(View(model));
        }
Пример #5
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,
            });
        }
 public IIdentity <Ticket> GetTargetEntityIdentity(TicketReference value)
 => ticketProvider.GetTicketByReference(value)?.GetIdentity();
 public IIdentity <Ticket> GetTargetEntityIdentity(AddWorkLogRequest value)
 => ticketProvider.GetTicketByReference(value.TicketReference)?.GetIdentity();