public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }
            if (RulesFile != null)
            {
                using (var ms = new MemoryStream())
                {
                    RulesFile.CopyTo(ms);
                    var file = ms.ToArray();


                    if (!DeletePrevious)
                    {
                        var previous = _context.DiscountRules.Select(d => new DiscountRule {
                            Id = d.Id
                        });
                        _context.DiscountRules.RemoveRange(previous);
                        await _context.SaveChangesAsync().ConfigureAwait(false);
                    }

                    var rules = _excelReaderService.GetRules(file).ToList();
                    await _context.DiscountRules.AddRangeAsync(rules).ConfigureAwait(false);

                    await _context.SaveChangesAsync().ConfigureAwait(false);
                }
            }
            return(RedirectToPage(":./Rules/Index"));
        }
Esempio n. 2
0
    public string SerializeModel(RulesFile fileModel)
    {
        var sb = new StringBuilder();

        // serialize metadata
        foreach (var kvp in fileModel.Metadata)
        {
            var line = SerializeLine(kvp.Key, kvp.Value);
            sb.AppendLine(line);
        }

        // serialize rules
        foreach (var rule in fileModel.Rules)
        {
            // name
            var nameLine = SerializeLine("name", rule.Name);
            sb.AppendLine(nameLine);

            // enabled
            var enabledLine = SerializeLine("enabled", rule.Enabled);
            sb.AppendLine(enabledLine);

            // type
            var typeLine = SerializeLine("type", rule.Type);
            sb.AppendLine(typeLine);

            // actions
            foreach (var action in rule.Actions)
            {
                var actionLine = SerializeLine("action", action.Action);
                sb.AppendLine(actionLine);

                if (action.ActionValue != null) // this one's optional
                {
                    var actoinValueLine = SerializeLine("actionValue", action.ActionValue);
                    sb.AppendLine(actoinValueLine);
                }
            }

            // conditions
            var conditionsLine = SerializeLine("condition", rule.Condition);
            sb.AppendLine(conditionsLine);
        }

        return(sb.ToString());
    }