using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.BL.Entities;
using System.Data.Entity;
namespace Tango.BL.Builders
{
public class MachineBuilder : EntityBuilderBase<Machine, MachineBuilder>
{
public MachineBuilder(ObservablesContext context) : base(context)
{
}
public virtual MachineBuilder WithVersion()
{
return AddQueryStep(1, (query) =>
{
return query.Include(x => x.MachineVersion);
});
}
public virtual MachineBuilder WithOrganization()
{
return AddStep(1, () =>
{
Context.Organizations.Where(x => x.Guid == Entity.OrganizationGuid)
.Include(x => x.Address)
.Include(x => x.Contact).FirstOrDefault();
});
}
public virtual MachineBuilder WithConfiguration()
{
return AddStep(2, () =>
{
new ConfigurationBuilder(Context)
.Set(Entity.ConfigurationGuid)
.WithIdsPacks()
.WithHardwareVersion()
.Build();
});
}
public virtual MachineBuilder WithJobs()
{
return AddStep(3, () =>
{
new JobsCollectionBuilder(Context).Set(x => x.MachineGuid == Entity.Guid).WithSegments().Build();
});
}
public virtual MachineBuilder WithSpools()
{
return AddStep(4, () =>
{
Context.Spools.Where(x => x.MachineGuid == Entity.Guid).Include(x => x.SpoolType).ToList();
});
}
public virtual MachineBuilder WithCats()
{
return AddStep(5, () =>
{
Context.Cats.Where(x => x.MachineGuid == Entity.Guid).Include(x => x.LiquidType).ToList();
});
}
}
}