Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
languagec#
firstline1
titleIProfessionalRepository.cs
linenumberstrue
using System.Collections.Generic;
using Tnf.Architecture.DtoDomain.Registration;
using Tnf.Architecture.Dto.Registration;
using Tnf.Domain.Repositories;
using Tnf.App.Dto.Request;
using Tnf.App.Dto.Response;

namespace Tnf.Architecture.Domain.Interfaces.Repositories
{
    public interface IProfessionalRepository : IRepository
    {
        PagingResponseDto<ProfessionalDto>ListDto<ProfessionalDto> GetAllProfessionals(GetAllProfessionalsDto request);
        ProfessionalDto GetProfessional(ProfessionalKeysDtoRequestDto<ProfessionalKeysDto> keysrequestDto);
        ProfessionalDtoProfessionalKeysDto CreateProfessional(ProfessionalDtoProfessional entity);
        ProfessionalDtoProfessional UpdateProfessional(ProfessionalDtoProfessional dto);
        bool DeleteProfessional(ProfessionalKeysDto keys);
        void AddOrRemoveSpecialties(ProfessionalKeysDto keys, List<SpecialtyDto> dto);
        bool ExistsProfessional(ProfessionalKeysDto keys);
    }
}

Bloco de código
languagec#
firstline1
titleProfessionalRepository.cs
linenumberstrue
using Tnf.Architecture.Domain.Interfaces.RepositoriesMicrosoft.EntityFrameworkCore;
using TnfSystem.EntityFrameworkCoreCollections.RepositoriesGeneric;
using TnfSystem.EntityFrameworkCoreLinq;
using Tnf.ArchitectureApp.EntityFrameworkCoreDto.EntitiesRequest;
using Tnf.ArchitectureApp.Dto.Response;
using SystemTnf.Architecture.CollectionsDomain.GenericInterfaces.Repositories;
using System.LinqTnf.Architecture.Domain.Registration;
using Tnf.Architecture.Dto.AutoMapperRegistration;
using Tnf.Architecture.Dto.Registration.EntityFrameworkCore.Entities;
using Tnf.AutoMapper;
using Tnf.Domain.Repositories;
using MicrosoftTnf.EntityFrameworkCore;
using SystemTnf.EntityFrameworkCore.Repositories;

namespace Tnf.Architecture.EntityFrameworkCore.Repositories
{
    public class ProfessionalRepository : EfCoreRepositoryBase<LegacyDbContext, ProfessionalPoco>, IProfessionalRepository
    {
        public ProfessionalRepository(IDbContextProvider<LegacyDbContext> dbContextProvider)
            : base(dbContextProvider)
        {
        }

        public bool DeleteProfessional(ProfessionalKeysDto keys)
        {
            var dbEntity = Context.Professionals
                .Include(i => i.ProfessionalSpecialties)
                .SingleOrDefault(s => s.ProfessionalId == keys.ProfessionalId && s.Code == keys.Code);

            if (dbEntity != null)
            {
                dbEntity.ProfessionalSpecialties.ForEach(w => Context.ProfessionalSpecialties.Remove(w));

                Context.Professionals.Remove(dbEntity);
            }

            return dbEntity != null;
        }

        private ProfessionalPoco GetProfessionalPoco(ProfessionalKeysDtoRequestDto<ProfessionalKeysDto> keysrequestDto)
        {
            var dbEntity = Context.Professionals
                .Include(i => i.ProfessionalSpecialties)
    IncludeByRequestDto(requestDto)
                .ThenIncludeWhere(iw => iw.Specialty)
ProfessionalId       == requestDto.GetId().ProfessionalId && w.Code == requestDto.GetId().Code)
                .SingleOrDefault(w => w.ProfessionalId == keys.ProfessionalId && w.Code == keys.CodeSelectFieldsByRequestDto(requestDto)
                .SingleOrDefault();

            return dbEntity;
        }

        public ProfessionalDto GetProfessional(ProfessionalKeysDtoRequestDto<ProfessionalKeysDto> keysrequestDto)
        {
            var dbEntity = GetProfessionalPoco(requestDto);
            var dto = dbEntity != null ? dbEntity.MapTo<ProfessionalDto>() : null;

            var dbEntity = GetProfessionalPoco(keysdto.RemoveExpandable(requestDto);

            return dbEntity != null ? dbEntity.MapTo<ProfessionalDto>() : nulldto;
        }

        public ProfessionalDtoProfessionalKeysDto CreateProfessional(ProfessionalDtoProfessional entity)
        {
            var dbEntity = entity.MapTo<ProfessionalPoco>();

            Context.Professionals.Add(dbEntity);
            Context.SaveChanges();

            return new ProfessionalKeysDto(dbEntity.ProfessionalId, dbEntity.MapTo<ProfessionalDto>(Code);
        }

        public ProfessionalDtoProfessional UpdateProfessional(ProfessionalDtoProfessional entity)
        {
            var mappedEntity = GetProfessionalPoco(new RequestDto<ProfessionalKeysDto>(new ProfessionalKeysDto(entity.ProfessionalId, entity.Code)));

            entity.MapTo(mappedEntity);

            Context.Professionals.Update(mappedEntity);
            Context.SaveChanges();

            return mappedEntity.MapTo<ProfessionalDto>()entity;
        }

        public PagingResponseDto<ProfessionalDto>ListDto<ProfessionalDto> GetAllProfessionals(GetAllProfessionalsDto request)
        {
            var response = new PagingResponseDto<ProfessionalDto>ListDto<ProfessionalDto>();

            var dbBaseQuery = Context.Professionals
                .Include(i => i.ProfessionalSpecialties)
)
                    .Include("ProfessionalSpecialtiesThenInclude(i => i.Specialty")
                .Where(w => request.Name == null || w.Name.Contains(request.Name));

            var dbQuery = dbBaseQuery
                .SkipSkipAndTakeByRequestDto(request.Offset)
                .TakeOrderByRequestDto(request.PageSize)
                .ToArray();

            response.Total = base.Count();
            response.Items = dbQuery.MapTo<List<ProfessionalDto>>();
            response.HasNext = response.Total > ((request.Page - 1) * request.PageSize) +   response.Data = dbQuery.MapTo<List<ProfessionalDto>>Items.Count();

            return response;
        }

        public void AddOrRemoveSpecialties(ProfessionalKeysDto keys, List<SpecialtyDto> dto)
        {
            var request = new RequestDto<ProfessionalKeysDto>(keys);
            request.Expand = new ProfessionalDto()._expandables[0];

            var dbProfessional = GetProfessionalPoco(keysrequest);

            if (dbProfessional != null)
            {
                var idsToAdd = dto.Select(s => s.Id).ToArray();

                if (dbProfessional.ProfessionalSpecialties == null)
                    dbProfessional.ProfessionalSpecialties = new List<ProfessionalSpecialtiesPoco>();

                dbProfessional.ProfessionalSpecialties.RemoveAll(w => !idsToAdd.Contains(w.SpecialtyId));

                dto.ForEach(w =>
                {
                    var dbProfessionalSpecialties = dbProfessional.ProfessionalSpecialties
                        .FirstOrDefault(s => s.SpecialtyId == w.Id);

                    if (dbProfessionalSpecialties == null)
                    {
                        dbProfessional.ProfessionalSpecialties.Add(new ProfessionalSpecialtiesPoco()
                        {
                            ProfessionalId = dbProfessional.ProfessionalId,
                            Code = dbProfessional.Code,
                            SpecialtyId = w.Id
                        });
                    }
                });
            }
        }

        public bool ExistsProfessional(ProfessionalKeysDto keys)
        {
            var dbEntity = Context.Professionals
                .SingleOrDefault(s => s.ProfessionalId == keys.ProfessionalId && s.Code == keys.Code);

            return dbEntity != null;
        }
    }
}

...