// не знаю на счет работоспособности кода, не проверял
// константы можно куда-то вынести
private const decimal PRICE_FOR_BAGGAGE = 50D;
private const int LIMIT_DAYS_FOR_UP_PRICE = 5;
private const decimal PRICE_PER_OVERDUE_DAY = 10D;
public decimal CalculateActualPrice(Flight flight)
{
var actualPrice = flight.BasePrice;
if (flight.HasBaggage == true)
actualPrice += PRICE_FOR_BAGGAGE;
int daysLeft = (flight.DateOfDeparture - DateTime.UtcNow).TotalDays;
if (daysLeft <= LIMIT_DAYS_FOR_UP_PRICE && daysLeft > 0)
actualPrice += daysLeft * PRICE_PER_OVERDUE_DAY;
// ...
return actualPrice;
}
decimal actualPrice = new PriceBuilder(flight)
.CorrectionForBaggage(priceForBaggageAvailability: 50D)
.CorrectionForDaysLeft(limitDaysForUpPrice: 5, pricePerOverdueDay: 10D)
// ...
.Build();
Может есть какие-то правила, которым нужно следовать при создании модулей/классов и т.д.? Или рекомендации?
При вызове этой ручки передаётся тип животного и в контроллере идет проверка если тип такой то+ личные свойства животного подходят под проверку делаем такие то действия, для пример
если тип = cat то создаем класс new Cat(params)
или если тип monkey && weight > 20, new Monkey
POST /api/animals/cat {name: '..', anotherParam1}и в каждом уже прописать нужную логику. Будет лучше читаться и легче изменяться.
POST /api/animals/dog {name: '..', anotherParam2}
POST /api/animals/owl {name: '..', anotherParam4: ''}
При этом также хочется сделать валидацию на входные параметры для каждого из животного. У каких то параметров валидация одинаковая, у других своя уникальная, в том числе и поля.
При это в одной главной таблице создается запись что животное принято, animals -> id, date, typeНе понятно зачем вам главная таблица Animals с перечнем всех животных, можете уточнить?
и затем для каждого животного свой класс и запись в свою таблицу new Cat(requestParams), new Dog(requestParams), etc
Для каждого создать свою request модель с валидацией, не придется в методе определять тип, сразу будет new Cat(params)...
ModelState.IsValid
) public DbSet<Schedule> Schedules;
public DbSet<Day> Days;
public DbSet<Lesson> Lessons;
public DbSet<Comment> Comments;
public DbSet<HistoryUserItem> HistoryUser;
public DbSet<HistoryScheduleItem> HistorySchedule;
public DbSet<TypeOfAction> TypeOfActions;
наpublic DbSet<Schedule> Schedules { get; set; }
public DbSet<Day> Days { get; set; }
public DbSet<Lesson> Lessons { get; set; }
public DbSet<Comment> Comments { get; set; }
public DbSet<HistoryUserItem> HistoryUser { get; set; }
public DbSet<HistoryScheduleItem> HistorySchedule { get; set; }
public DbSet<TypeOfAction> TypeOfActions { get; set; }
file.open(way, fstream::in | fstream::out | fstream::app);