コード例 #1
0
        public override async Task <Start> add(AddStartRequest request, ServerCallContext context)
        {
            var start = new Data.Start()
            {
                RaceId = request.RaceId
            };

            UpdateStart(start, request.Start);

            dbContext.Starts.Add(start);
            await dbContext.SaveChangesAsync();

            return(ToProtoStart(start));
        }
コード例 #2
0
 private void UpdateStart(Data.Start entity, Start model)
 {
     // update only properties edited in form
     entity.DelayMarksAfterStartMinutes = model.DelayMarksAfterStartMinutes;
     entity.Name         = model.Name;
     entity.PlannedStart = model.PlannedStart?.ToDateTime();
     entity.Type         = model.Type.FromProto();
     Utils.UpdateCollection(
         entity.Categories,
         model.Categories,
         (e, m) => e.Category.Id == m.Id,
         (m) => new Data.StartCategory {
         Start = entity, Category = dbContext.RaceCategories.Find(m.Id)
     }
         );
 }
コード例 #3
0
        private static Start ToProtoStart(Data.Start start)
        {
            var result = new Start
            {
                DelayMarksAfterStartMinutes = start.DelayMarksAfterStartMinutes,
                End          = start.End.ToTimestamp(),
                Name         = start.Name,
                Id           = start.Id,
                PlannedStart = start.PlannedStart.ToTimestamp(),
                RealStart    = start.RealStart.ToTimestamp(),
                Type         = start.Type.ToProto(),
                RaceId       = start.RaceId,
                // ReSharper disable once ConstantConditionalAccessQualifier
                RaceName = start.Race?.Name ?? string.Empty
            };

            result.Categories.AddRange(start.Categories.Select(c => new Start.Types.Category
            {
                Id   = c.Category.Id,
                Code = c.Category.Code,
                Name = c.Category.Name
            }));
            return(result);
        }