public async Task <DbResponse <RequestType> > AddAsync(RequestTypeVm reqTypeVm)
        {
            try
            {
                if (context.RequestTypes.Any(x => x.Name == reqTypeVm.Name && !x.IsDeleted))
                {
                    return(new DbResponse <RequestType>
                    {
                        ErrorMessage = $"Тип заявки с именем {reqTypeVm.Name} уже существует"
                    });
                }

                var requestType = new RequestType
                {
                    Name = reqTypeVm.Name
                };

                requestType.RequestTypeFields = reqTypeVm.RequestTypeFields
                                                .Where(x => !string.IsNullOrEmpty(x.Name))
                                                .Select(x => new RequestTypeField
                {
                    Name          = x.Name,
                    Type          = Enum.Parse <RequestFieldType>(x.Type),
                    RequestTypeId = requestType.Id
                }).ToList();

                context.RequestTypes.Add(requestType);

                await context.SaveChangesAsync();

                return(new DbResponse <RequestType>
                {
                    Message = "Тип заявки успешно создан",
                    Response = requestType
                });
            }
            catch (Exception ex)
            {
                // log..
                return(new DbResponse <RequestType>
                {
                    ErrorMessage = "Возникла ошибка во время создания типа заявки"
                });
            }
        }
        public async Task <DbResponse <RequestType> > UpdateAsync(RequestTypeVm requestTypeVm)
        {
            try
            {
                var requestType = context.RequestTypes.Include(x => x.RequestTypeFields).FirstOrDefault(x => x.Id == requestTypeVm.Id);

                if (requestType == null)
                {
                    return(new DbResponse <RequestType>
                    {
                        ErrorMessage = "Тип заявки не существует или была удалена"
                    });
                }

                if (context.RequestTypes.Any(x => x.Name == requestTypeVm.Name && x.Id != requestTypeVm.Id && !x.IsDeleted))
                {
                    return(new DbResponse <RequestType>
                    {
                        ErrorMessage = $"Типа заявки с названием {requestTypeVm.Name} уже существует"
                    });
                }

                requestType.Name = requestTypeVm.Name;

                var currentFieldTypesDict = requestType.RequestTypeFields.ToDictionary(x => x.Id);

                foreach (var fieldTypeVm in requestTypeVm.RequestTypeFields)
                {
                    if (currentFieldTypesDict.TryGetValue(fieldTypeVm.Id, out var fieldType))
                    {
                        if (string.IsNullOrEmpty(fieldTypeVm.Name))
                        {
                            return(new DbResponse <RequestType>
                            {
                                ErrorMessage = "Название типа не может быть пустым"
                            });
                        }

                        fieldType.Name      = fieldTypeVm.Name;
                        fieldType.Type      = Enum.Parse <RequestFieldType>(fieldTypeVm.Type);
                        fieldType.IsDeleted = fieldTypeVm.IsDeleted;
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(fieldTypeVm.Name))
                        {
                            return(new DbResponse <RequestType>
                            {
                                ErrorMessage = "Название типа не может быть пустым"
                            });
                        }

                        requestType.RequestTypeFields.Add(new RequestTypeField
                        {
                            Name      = fieldTypeVm.Name,
                            Type      = Enum.Parse <RequestFieldType>(fieldTypeVm.Type),
                            IsDeleted = fieldTypeVm.IsDeleted
                        });
                    }
                }

                await context.SaveChangesAsync();

                return(new DbResponse <RequestType>
                {
                    Message = "Тип заявки успешно изменён",
                    Response = requestType
                });
            }
            catch (Exception ex)
            {
                // log..
                return(new DbResponse <RequestType>
                {
                    ErrorMessage = "Произошла ошибка при обновлении типа заявки"
                });
            }
        }