Пример #1
0
        /// <summary>
        /// Linking the activities and tags together in this join table
        /// </summary>
        /// <param name="tDTOList"></param>
        /// <returns></returns>
        public async Task CreateTaskActivityByID(List <TagDTO> tDTOList)
        {
            int lastActivity = await _context.Activities.OrderByDescending(x => x.ID).Select(x => x.ID).FirstAsync();

            TagActivity tagActivity = new TagActivity();

            for (int i = 0; i < tDTOList.Count; i++)
            {
                tagActivity.ActivitiesId = lastActivity;
                tagActivity.TagId        = tDTOList[i].ID;

                _context.TagActivity.Add(tagActivity);
                await _context.SaveChangesAsync();
            }
        }
Пример #2
0
        private void OnNext(TagActivity activity)
        {
            switch (activity.Operation)
            {
            case TagOperation.DELETE:
                DeleteTagFromJobs(activity.Value);
                break;

            case TagOperation.UPDATE:
                UpdateTagsInJobs(activity.Value, activity.OldValue);
                break;

            default:
                throw new NotImplementedException($"{activity.Operation} is not supported for extension works");
            }
        }
Пример #3
0
        private CreateWorkLogRequest ConstructCreateWorkLogRequest(TagActivity tagActivity, string userId)
        {
            var workItemGroup = tagActivity.Groups.Where(g => g.Key.StartsWith("#")).Single();

            var workItemId = workItemGroup.Key.TrimStart('#');

            bool billable = tagActivity.Groups.Any(g => g.Key == TagLabels.Billable);

            var activityTypeId = billable ? _billableActivityId : _nonBillableActivityId;

            return(new CreateWorkLogRequest(
                       timeStamp: tagActivity.StartTime.UtcDateTime,
                       length: Convert.ToInt32(tagActivity.Duration.TotalSeconds),
                       workItemId: workItemId,
                       comment: $"via{ClientPlugin.HiddenTagLabel}[{tagActivity.ActivityId}]\n{tagActivity.Notes}",
                       userId: userId,
                       activtyTypeId: activityTypeId));
        }
        public async Task <ActionResult <TagActivity> > PostTagActivity(TagActivity tagActivity)
        {
            _context.TagActivity.Add(tagActivity);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (TagActivityExists(tagActivity.ActivitiesId))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtAction("GetTagActivity", new { id = tagActivity.ActivitiesId }, tagActivity));
        }
Пример #5
0
        private IEnumerable <WorkLog> FindDuplicateExistingWorkLogs(IEnumerable <WorkLog> workLogs, TagActivity tagActivity)
        {
            var existingFormat = new Regex($@"via{ClientPlugin.HiddenTagLabel}\[(\d+)\]");

            foreach (WorkLog workLog in workLogs)
            {
                Match match = existingFormat.Match(workLog.Comment);

                if (match.Success == false || int.Parse(match.Groups[1].Value) != tagActivity.ActivityId)
                {
                    continue;
                }

                yield return(workLog);
            }
        }