Beispiel #1
0
        /// <summary>
        /// Method for creating a connection
        /// </summary>
        /// <param name = "data"> Data </param>
        /// <param name = "reverted"> Reverse </param>
        /// <param name = "idGetter"> Id getter </param>
        /// <param name = "idSetter"> Id setter </param>
        /// <param name = "userId"> User Id </param>
        /// <returns> </returns>
        private async Task <bool> LinkCreateHandler <TParent, TChild>(
            LinkCommentM data,
            bool reverted,
            Func <TChild, int?> idGetter,
            Action <TChild, int?> idSetter,
            string userId)
            where TParent : class, IStatisticalUnit, new()
            where TChild : class, IStatisticalUnit, new()
        => await LinkHandler <TParent, TChild, bool>(
            data,
            reverted,
            async (unit1, unit2) =>
        {
            var parentId = idGetter(unit2);

            if (parentId.HasValue)
            {
                if (parentId == unit1.RegId)
                {
                    throw new BadRequestException(nameof(Resource.LinkAlreadyExists));
                }
                //TODO: Discuss overwrite process throw new BadRequestException(nameof(Resource.LinkUnitAlreadyLinked));
            }

            var changeDateTime = DateTime.Now;
            _commonSvc.TrackUnithistoryFor <TChild>(unit2.RegId, userId, ChangeReasons.Edit, data.Comment, changeDateTime);

            idSetter(unit2, unit1.RegId);

            _commonSvc.TrackUnithistoryFor <TParent>(unit1.RegId, userId, ChangeReasons.Edit, data.Comment, changeDateTime);

            using (var transaction = _dbContext.Database.BeginTransaction())
            {
                try
                {
                    await _dbContext.SaveChangesAsync();
                    transaction.Commit();
                    return(true);
                }
                catch (Exception e)
                {
                    throw new BadRequestException(nameof(Resource.SaveError), e);
                }
            }
        });
Beispiel #2
0
 public async Task<IActionResult> Delete([FromBody] LinkCommentM model)
 {
     await _service.LinkDelete(model, User.GetUserId());
     return NoContent();
 }
Beispiel #3
0
 /// <summary>
 /// Connection creation method
 /// </summary>
 /// <param name = "data"> Data </param>
 /// <param name = "userId"> User Id </param>
 /// <returns> </returns>
 public async Task LinkCreate(LinkCommentM data, string userId)
 => await LinkContext(data, LinkCreateMethod, nameof(Resource.LinkTypeInvalid), userId);
Beispiel #4
0
 /// <summary>
 /// Unlink method
 /// </summary>
 /// <param name = "data"> Data </param>
 /// <param name = "userId"> User Id </param>
 /// <returns> </returns>
 public async Task LinkDelete(LinkCommentM data, string userId)
 => await LinkContext(data, LinkDeleteMethod, nameof(Resource.LinkNotExists), userId);