private static PointsGroup ConvertToPointsGroup(PointsGroupModel pointsGroupModel)
 {
     return(new PointsGroup
     {
         PointsGroupId = pointsGroupModel.PointsGroupId,
         Name = pointsGroupModel.Name,
         AverageHorizontalDisplacement = pointsGroupModel.AverageHorizontalDisplacement,
         AverageVerticalDisplacement = pointsGroupModel.AverageVerticalDisplacement,
         ClusteringOutputJson = JsonConvert.SerializeObject(pointsGroupModel.CalculationOutput)
     });
 }
        /// <summary>
        /// Create a <see cref="PointsGroup"/> and persist it to the database.
        /// </summary>
        /// <returns></returns>
        private async Task <PointsGroupModel> AddPointsGroupInternalAsync(int userId, PointsGroupModel pointsGroupModel)
        {
            userId = 1;
            var pointsGroup = ConvertToPointsGroup(pointsGroupModel);

            // create itemId for pointsGroup
            var itemId = await this._itemService.AddItemAsync(ItemType.PointsGroup, ItemPermissionType.Private);

            pointsGroup.ItemId = itemId;

            await this._context.PointsGroups.AddAsync(ConvertToPointsGroup(pointsGroupModel));

            await this._context.SaveChangesAsync();

            await this._context.UserItems.AddAsync(new UserItem { UserId = userId, ItemId = itemId });

            await this._context.SaveChangesAsync();

            pointsGroup.ClusteringOutputJson = JsonConvert.SerializeObject(this.GetCalculationOutputModel(pointsGroupModel.Points));

            this._context.Update(pointsGroup);
            await this._context.SaveChangesAsync();

            return(this.GetPointsGroupModel(pointsGroup, this._context.Items.Single(i => i.ItemId == itemId)));
        }
 /// <summary>
 /// Persist a <see cref="PointsGroup"/> to the database.
 /// </summary>
 public async Task <PointsGroupModel> SavePointsGroupAsync(int userId, PointsGroupModel pointsGroupModel)
 => await this.AddPointsGroupInternalAsync(userId, pointsGroupModel).ConfigureAwait(false);
 public async Task <IActionResult> SavePointsGroup([FromBody] PointsGroupModel pointsGroupModel)
 {
     return(Ok(await this._pointsGroupService.SavePointsGroupAsync(this._userId, pointsGroupModel)));
 }