public async Task <ChangedInformationResultModel> AddCriterionsAsync(string positionName, CriterionModel[] criterions)
        {
            var foundPos = await _positionManager.GetPositionByNameAsync(positionName);

            if (foundPos == null)
            {
                return(new ChangedInformationResultModel {
                    Success = false, ErrorsMessages = new[] { "Position not found" }
                });
            }

            List <string> errors = new List <string>();

            List <EvaluationСriterionModel> critModels      = new List <EvaluationСriterionModel>();
            List <CriterionToPositionModel> critToPosModels = new List <CriterionToPositionModel>();

            // adding new elements in models collections
            foreach (var element in criterions)
            {
                if (!string.IsNullOrEmpty(element.Name))
                {
                    var existCrit = await _dataContext.Criterions.FirstOrDefaultAsync(x => x.CriterionName == element.Name);

                    var existPair = await _dataContext.CriterionsToPosition.FirstOrDefaultAsync(x =>
                                                                                                (x.CriterionName == element.Name &&
                                                                                                 x.Position.PositionName == positionName));

                    if (existPair == null)
                    {
                        if (existCrit == null)
                        {
                            existCrit = new EvaluationСriterionModel
                            {
                                CriterionName = element.Name,
                                Weight        = element.Weight
                            };

                            critModels.Add(existCrit);
                        }

                        var newCritToPosModel = new CriterionToPositionModel
                        {
                            CriterionName = element.Name,
                            Position      = foundPos,
                            PositionId    = foundPos.PositionId
                        };

                        critToPosModels.Add(newCritToPosModel);
                    }
                    else
                    {
                        errors.Add($"{element.Name} already exist");
                    }
                }
                else
                {
                    errors.Add($"{element.Name} is null");
                }
            }

            if (critToPosModels.Count > 0)
            {
                await _dataContext.CriterionsToPosition.AddRangeAsync(critToPosModels);

                if (critModels.Count > 0)
                {
                    await _dataContext.Criterions.AddRangeAsync(critModels);
                }

                await _dataContext.SaveChangesAsync();
            }
            else
            {
                return(new ChangedInformationResultModel {
                    Success = false, ErrorsMessages = errors
                });
            }

            return(new ChangedInformationResultModel {
                Success = true, ErrorsMessages = errors
            });
        }