Разработка простой системы оценки работы - PullRequest
2 голосов
/ 25 мая 2011

Как лучше всего внедрить простую систему квот для определения стоимости работы на основе двух атрибутов тип и значение .

Стоимость работы будетопределил, в какой диапазон попадает значение для его типа .

Например:

Тип задания A обойдется в

  • 80 долларов США на сумму от 0 до 150
  • 100 долларов США на сумму от 150 долларов США.300
  • 120 долларов США на сумму> 300 долларов США

Тип работы B обойдется в

  • 50 долларов США на сумму от 0 до 120
  • $ 100 для значения между 120-250
  • $ 120 для значения между $ 120-500
  • $ 150 для значения> $ 500

Диапазон диапазона должен быть настраиваемым и каждое задание тип может иметь различный диапазон диапазонов.

Диапазон диапазонов и стоимость могут изменяться и в конечном итоге будут храниться в базе данных сервера SQL, доступ к которой осуществляется через шаблон репозитория, чтобы я мог реализовать фиктивное хранилище для TDD.

Моя первоначальная разработка привела меня к тому, что ниже был представлен легкий класс, представляющий полосы

public class JobCostBand
{
    public int ID { get; set; }
    public string Type { get; set; }
    public float ValueLowerBand { get; set; }
    public float ValueUpperBand { get; set; }
    public float Cost { get; set; }
}

У меня был фиктивный репозиторий, использующий LINQ для выбора из списка этих объектов в памяти и возврата затрат,Этот класс достаточно легко отобразится в таблицу SQL, в которой я мог бы использовать LINQ to SQL, чтобы найти стоимость в моем окончательном хранилище БД.

Моя проблема заключалась в том, что делать с последней группой для данной работы type .Я начал с использования float.MaxValue для верхней полосы, но мне это не понравилось.Затем я подумал об использовании верхнего или нижнего значения для указания полосы в JobCostClass, но опять-таки это не сработало.Я слишком много думаю об этом или я упустил очень простой способ моделирования этого?

1 Ответ

0 голосов
/ 25 мая 2011

Работа, которую вы пытаетесь сделать, - сопоставить входное значение с полосой. Как вы представляете это второстепенный вопрос. Таким образом, вы действительно должны сосредоточиться на объекте, который может вернуть правильный диапазон для данного входного значения.

Я бы придерживался представления только верхней или нижней полосы для каждого JobCostBand. Также имейте значение NULL для верхней полосы в случае, если верхнее значение данной полосы ниже, чем нижнее значение следующей полосы. Имейте объект 'менеджера', который хранит коллекцию полос, и который может запрашивать их в ответ на значение и решать, какой из них является наиболее подходящим. Я бы сохранял их в отсортированном списке (упорядоченном по нижнему порогу диапазона) и перебирал массив по порядку, пока диапазон не совпадет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...