示例#1
0
        public ActionResult Create(Guid equipmentId)
        {
            var equipment = this.GetEquipmentById(equipmentId);
            var model     = new TierModel
            {
                EquipmentItemId   = equipment.Id,
                EquipmentItemName = equipment.Name,
            };

            return(View(model));
        }
示例#2
0
 private ActionResult UpdateModelForPostResult(TierModel model, Func <TierModel, WorkResult> unitOfWork)
 {
     if (ModelState.IsValid)
     {
         var result = unitOfWork.Invoke(model);
         if (result.IsValid)
         {
             return(this.RederictToIndex(model.EquipmentItemId));
         }
         model.ValidationResults.AddRange(result.ValidationResults);
     }
     return(View(model));
 }
示例#3
0
 public ActionResult Delete(TierModel model)
 {
     //TODO: server side validation
     this.tiersRepository.Delete(model.Id);
     return(this.RederictToIndex(model.EquipmentItemId));
 }
示例#4
0
 public ActionResult Edit(TierModel model)
 {
     return(this.UpdateModelForPostResult(model, this.tiersRepository.Update));
 }
示例#5
0
        // PARSE
        // parses a whole set of price inputs
        public static PriceModel Parse(string input)
        {
            PriceModel model = new PriceModel();

            if (string.IsNullOrEmpty(input) ||
                string.IsNullOrWhiteSpace(input) ||
                input.Length <= 1)
            {
                return(null);
            }

            // check for "5,00€" or "1,50€ pro Stunde"
            if (input.Count(f => f == '€') == 1 && !input.Contains("/") && input.Length < 20)
            {
                model.PerHour = new PerHourModel(1, StripAllAlphas(input));
                return(model);
            }

            // check for format "1,70 € / 15,00 €"
            if (input.Contains("/") && input.Length < 20)
            {
                return(GetHourAndDayPrice(input));
            }

            // check for tiered and special hours
            else
            {
                // check for "2€ für Nichtkunden; 1€ für Kunden"
                if (input.Contains(";"))
                {
                    string[] semihalfs = input.Split(';');
                    foreach (string half in semihalfs)
                    {
                        if (half.IndexOf("€") >= 0)
                        {
                            model.PerHour = new PerHourModel(1, StripAllAlphas(half));
                            return(model);
                        }
                    }
                }

                // is this a multi liner?
                if (input.Contains("\n"))
                {
                    string[] lines = input.Split('\n');

                    // check for "5 € / 15 €" in first line
                    if (lines.First().Contains("/") &&
                        lines.First().Count(f => f == '€') == 2 &&
                        lines.First().Length < 20)
                    {
                        return(GetHourAndDayPrice(lines.First()));
                    }

                    // check for "je angefangene stunde 1.70€"
                    if (lines.First().ToLower().Contains("je angefangene stunde"))
                    {
                        model.PerHour = new PerHourModel(1, StripAllAlphas(input));
                        return(model);
                    }

                    // loop all lines
                    foreach (string line in lines)
                    {
                        // check for "1,80€ bis 1,90€ / Stunde"
                        if (line.Contains("/ Stunde") || line.Contains("jede weitere angefangene Stunde"))
                        {
                            string[] hours = line.Split('/');
                            string   value = hours [0];

                            if (value.Contains("bis"))
                            {
                                value = value.Substring(0, value.IndexOf("bis"));
                            }

                            model.PerHour = new PerHourModel(1, StripAllAlphas(value));
                        }

                        // check for "14€ / Tag"
                        if (line.Contains("/ Tag") || line.Contains("Tagesmax."))
                        {
                            string[] days = line.Replace("Tagesmax.", "").Split('/');

                            model.FullDay = Convert.ToDouble(StripAllAlphas(days [0]));
                        }

                        // check for a tiered model
                        if (line.Contains("1. angefangene Stunde"))
                        {
                            TierModel tier = new TierModel();
                            tier.PerHour = true;
                            tier.Price   = Convert.ToDouble(StripAllAlphas(line.Replace("1. angefangene Stunde", "")));
                            tier.From    = 0.0;
                            tier.To      = 1.0;

                            if (model.Tiered == null)
                            {
                                model.Tiered = new List <TierModel> ();
                            }

                            model.Tiered.Add(tier);
                        }

                        // extract minutes tie
                        if (line.Contains(" min. "))
                        {
                            string frame = line.Substring(0, line.IndexOf(" min. "));
                            string price = line.Substring(line.IndexOf("min.") + 4, line.Length - 5 - line.IndexOf("min."));

                            TierModel tier = new TierModel();

                            if (frame.Contains("-"))
                            {
                                string[] times = frame.Split('-');
                                double   start = Convert.ToDouble(times[0]);
                                double   stop  = Convert.ToDouble(times[1]);

                                tier.From = start / 60.0;
                                tier.To   = stop / 60.0;
                            }

                            tier.PerHour = true;
                            tier.Price   = Convert.ToDouble(StripAllAlphas(price));

                            if (model.Tiered == null)
                            {
                                model.Tiered = new List <TierModel> ();
                            }

                            model.Tiered.Add(tier);
                        }

                        // special prices at certain hours
                        if (line.Contains("Nachttarif"))
                        {
                            string   timeframe = GetSubstringByString("(", ")", line).Replace("Uhr", "").Trim();
                            string[] times     = timeframe.Split('-');

                            TierModel specialtier = new TierModel();
                            specialtier.PerHour = false;
                            specialtier.From    = Convert.ToInt32(times[0].Replace(".", ""));
                            specialtier.To      = Convert.ToInt32(times[1].Replace(".", ""));
                            specialtier.Price   = Convert.ToDouble(StripAllAlphas(line.Split(':') [1]));

                            model.SpecialHours = specialtier;
                        }
                    }

                    // only return if values are set
                    if (model.FullDay.HasValue || model.PerHour != null)
                    {
                        return(model);
                    }
                }
                else
                {
                    // check for "je stunde zahlen sie 1,00 Euro das Tagesmaximum liegt bei 20 Euro"
                    if (input.Contains("Stunde") && input.Contains("Tages"))
                    {
                        int idx;
                        if (input.Contains(", "))
                        {
                            idx = input.IndexOf(", ");
                        }
                        else
                        {
                            idx = input.IndexOf("Tages");
                        }

                        string hour = input.Substring(0, idx).Replace(", ", "");
                        string day  = input.Substring(idx, input.Length - idx).Replace(", ", "");

                        model.PerHour = new PerHourModel(1, StripAllAlphas(hour));
                        model.FullDay = StripAllAlphas(day);
                        return(model);
                    }
                }
            }

            return(null);
        }
        public async Task UpdateAsync([FromBody] TierModel model)
        {
            var tier = _mapper.Map <Tier>(model);

            await _tiersService.UpdateAsync(tier);
        }
        public async Task <IReadOnlyList <TierUpgradeRequestResponse> > GetByTierAsync(TierModel tier)
        {
            var result = await _tierUpgradeService.GetByTierAsync(_mapper.Map <AccountTier>(tier));

            return(_mapper.Map <IReadOnlyList <TierUpgradeRequestResponse> >(result));
        }
        public async Task <TierUpgradeRequestResponse> GetAsync(string clientId, TierModel tier)
        {
            ITierUpgradeRequest result = await _tierUpgradeService.GetAsync(clientId, _mapper.Map <AccountTier>(tier));

            return(_mapper.Map <TierUpgradeRequestResponse>(result));
        }