コード例 #1
0
        /// <summary>
        /// Окончательный подсчет стоимости перевозки и доставки со всеми услугами
        /// </summary>
        /// <param name="volumeCost">Модель для вычисления стоимости доставки груза определенного веса и объема из пункта А в пункт Б</param>
        /// <param name="lathingCost">Модель для вычисления стоимости обрешетки определенного объема, с определенным коэффициентом</param>
        /// <param name="addServiceCost">Модель для вычисления стоимости дополнительных услуг</param>
        /// <param name="pickUpFromCost">Модель для: Забора от дверей отправителя</param>
        /// <param name="pickUpToCost">Модель для: Доставки до дверей получателя</param>
        /// <returns>Окончательная стоимость перевозки и доставки</returns>
        public decimal PostTotalCost(VolumeCostDTO volumeCost, LathingCostDTO lathingCost, AddServiceCostDTO addServiceCost, PickUpCostDTO pickUpFromCost, PickUpCostDTO pickUpToCost)
        {
            // input data tracer
            //
            string s_input = string.Format("--- CostService.PostTotalCost({0},{1},{2},{3}) ---",
                                           volumeCost.TownFromId, volumeCost.TownToId, volumeCost.Weight, volumeCost.Volume);

            Trace.WriteLine(s_input);

            // валидация
            if (volumeCost.TownFromId == volumeCost.TownToId)
            {
                throw new ValidationException("Город отправления не может совпадать с городом получения", "TownToId");
            }

            // cost calculating
            //
            decimal cost = 0;

            /*--------------------------    Internal BLL logic -------------------------*/

            /*--------------------------    Internal BLL logic -------------------------*/

            // ouput data tracer
            //
            string s_output = string.Format("--- CostService.PostTotalCost() = {0} ---", cost);

            Trace.WriteLine(s_output);

            return(cost);
        }
コード例 #2
0
        /// <summary>
        /// Подсчет стоимости доставки в зависимости от веса и объема груза
        /// </summary>
        /// <param name="volumeCostDTO">Модель для вычисления стоимости доставки груза определенного веса и объема из пункта А в пункт Б</param>
        /// <returns>Стоимость в зависимости от входных параметров</returns>
        public decimal PostVolumeCost(VolumeCostDTO volumeCostDTO)
        {
            // input data tracer
            //
            string s_input = string.Format("--- CostService.PostVolumeCost({0},{1},{2},{3}) ---", volumeCostDTO.TownFromId, volumeCostDTO.TownToId, volumeCostDTO.Weight, volumeCostDTO.Volume);

            Trace.WriteLine(s_input);

            // валидация
            if (volumeCostDTO.TownFromId == volumeCostDTO.TownToId)
            {
                throw new ValidationException("Города отправления и назначения - совпадают", "TownToId");
            }

            if (volumeCostDTO.Weight <= 0 || volumeCostDTO.Weight >= 20000)
            {
                throw new ValidationException("Вес - должен быть более нуля и менее 20 тонн.", "Weight");
            }

            if (volumeCostDTO.Volume < 0 || volumeCostDTO.Volume >= 20)
            {
                throw new ValidationException("Объем - должен быть не менее нуля и не более 20 куб.м.", "Volume");
            }

            // cost calculating
            //
            decimal cost = 0;

            /*--------------------------    Internal BLL logic -------------------------*/

            /*--------------------------    Internal BLL logic -------------------------*/

            // ouput data tracer
            //
            string s_output = string.Format("--- CostService.PostBasicCost() = {0} ---", cost);

            Trace.WriteLine(s_output);

            return(cost);
        }