using AsbCloudApp.Repositories;
using AsbCloudApp.Requests;
using AsbCloudApp.Services;
using AsbCloudInfrastructure.Services.ProcessMapPlan.Export;
using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser;
using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan;
using AsbCloudWebApi.IntegrationTests;
using Microsoft.EntityFrameworkCore;
using Xunit;
using AsbCloudDb.Model.ProcessMapPlan.Operations;
using AsbCloudApp.Data.ProcessMaps.Operations;

namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations;

/// <summary>
/// РТК план проработка для ротора
/// </summary>
public class ProcessMapPlanReamingRotorControllerTest :
      ProcessMapPlanBaseControllerTest<ProcessMapPlanReamingRotor, ProcessMapPlanReamingRotorDto>
{
    public ProcessMapPlanReamingRotorControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanReamingRotor")
    {
    }
    private readonly ProcessMapPlanReamingRotorDto dto = new ProcessMapPlanReamingRotorDto()
    {
        IdWell = 1,
        DepthStart = 1,
        DepthEnd = 2,
        Id = 0,
        IdWellSectionType = 1,
        DifferentialPressure = 2,
        Note = "5",
        Reaming1FlowRateDown = 7,
        Reaming2FlowRateDown = 8,
        Reaming3FlowRateDown = 9,
        Reaming1FlowRateUp = 10,
        Reaming1Interval = 11,
        Reaming2Interval = 12,
        Reaming1StopPointOffBottom = 3,
        Reaming2FlowRateUp = 4,
        Reaming3FlowRateUp = 5,
        Reaming2StopPointOffBottom = 1,
        Reaming3Interval = 2,
        Reaming3StopPointOffBottom = 4,
        Reaming3RopDown = 5,
        TorqueMax = 6,
        Tight = 6,
        SlackingOff = 7,
        PressureMax = 8,
        Reaming1RepetitionsCount = 9,
        Reaming1RopDown = 10,
        Reaming1RopUp = 11,
        Reaming1RpmDown = 12,
        Reaming1RpmUp = 13,
        Reaming2RpmDown = 14,
        Reaming2RepetitionsCount = 15,
        Reaming2RopDown = 16,
        Reaming2RopUp = 17,
        Reaming3RpmDown = 18,
        Reaming3RpmUp = 19,
        Reaming2RpmUp = 20,
        Reaming3RepetitionsCount = 20,
        Reaming3RopUp = 21,
    };

    private readonly ProcessMapPlanReamingRotor entity = new ProcessMapPlanReamingRotor()
    {
        IdWell = 1,
        DepthEnd = 10,
        DepthStart = 2,
        Id = 0,
        IdWellSectionType = 1,
        IdAuthor = 1,
        IdEditor = 1,
        Creation = DateTimeOffset.UtcNow,
        DifferentialPressure = 2,
        Note = "5",
        Reaming1FlowRateDown = 7,
        Reaming2FlowRateDown = 8,
        Reaming3FlowRateDown = 9,
        Reaming1FlowRateUp = 10,
        Reaming1Interval = 11,
        Reaming2Interval = 12,
        Reaming1StopPointOffBottom = 3,
        Reaming2FlowRateUp = 4,
        Reaming3FlowRateUp = 5,
        Reaming2StopPointOffBottom = 1,
        Reaming3Interval = 2,
        Reaming3StopPointOffBottom = 4,
        Reaming3RopDown = 5,
        TorqueMax = 6,
        Tight = 6,
        SlackingOff = 7,
        PressureMax = 8,
        Reaming1RepetitionsCount = 9,
        Reaming1RopDown = 10,
        Reaming1RopUp = 11,
        Reaming1RpmDown = 12,
        Reaming1RpmUp = 13,
        Reaming2RpmDown = 14,
        Reaming2RepetitionsCount = 15,
        Reaming2RopDown = 16,
        Reaming2RopUp = 17,
        Reaming3RpmDown = 18,
        Reaming3RpmUp = 19,
        Reaming2RpmUp = 20,
        Reaming3RepetitionsCount = 20,
        Reaming3RopUp = 21,
    };

    [Fact]
    public async Task Get_actual_returns_success()
    {
        await Get(entity, dto);
    }

    protected override ProcessMapPlanReamingRotor GetByNote(DbSet<ProcessMapPlanReamingRotor> dbSet, ProcessMapPlanReamingRotorDto dto)
    {
        throw new NotImplementedException();
    }

    protected override ProcessMapPlanReamingRotorDto GetByNote(IEnumerable<ProcessMapPlanReamingRotorDto> dtos, ProcessMapPlanReamingRotorDto dto)
    {
        throw new NotImplementedException();
    }

    protected override ProcessMapPlanReamingRotor? GetByWellId()
    {
        throw new NotImplementedException();
    }
}