예제 #1
0
 /// <summary>
 /// Communication handler method
 /// </summary>
 /// <param name = "data"> Data </param>
 /// <param name = "reverted"> Reverse </param>
 /// <param name = "work"> At work </param>
 /// <returns> </returns>
 private async Task <TResult> LinkHandler <TParent, TChild, TResult>(
     LinkSubmitM data,
     bool reverted,
     Func <TParent, TChild, Task <TResult> > work)
     where TParent : class, IStatisticalUnit
     where TChild : class, IStatisticalUnit
 => await work(
     await _commonSvc.GetUnitById <TParent>(reverted ? data.Source2.Id : data.Source1.Id, false),
     await _commonSvc.GetUnitById <TChild>(reverted ? data.Source1.Id : data.Source2.Id, false));
예제 #2
0
 /// <summary>
 /// Communication handler method for being created
 /// </summary>
 /// <param name = "data"> Data </param>
 /// <param name = "reverted"> Reverse </param>
 /// <param name = "idGetter"> Id getter </param>
 /// <returns> </returns>
 private async Task <bool> LinkCanCreateHandler <TParent, TChild>(
     LinkSubmitM data,
     bool reverted,
     Func <TChild, int?> idGetter,
     Action <TChild, int?> idSetter,
     string userId)
     where TParent : class, IStatisticalUnit
     where TChild : class, IStatisticalUnit, new()
 => await LinkHandler <TParent, TChild, bool>(data, reverted, (unit1, unit2) =>
 {
     var childUnitId = idGetter(unit2);
     return(Task.FromResult(childUnitId == null || childUnitId.Value == unit1.RegId));
 });
예제 #3
0
 public async Task<IActionResult> CanBeLinked([FromQuery] LinkSubmitM model)
     => Ok(await _service.LinkCanCreate(model, User.GetUserId()));
예제 #4
0
 // TODO: Optimize (Use Include instead of second query + another factory)
 /// <summary>
 /// The method of checking for the possibility of being connected
 /// </summary>
 /// <param name = "data"> Data </param>
 /// <param name = "userId"> User Id </param>
 /// <returns> </returns>
 public async Task <bool> LinkCanCreate(LinkSubmitM data, string userId)
 => await LinkContext(data, LinkCanCreateMedthod, nameof(Resource.LinkTypeInvalid), userId);