public override void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var templateName = request.Data.GetOrDefault <string>(k.name);
                var description  = request.Data.GetOrDefault <Dictionary <string, object> >(k.description);

                if (string.IsNullOrEmpty(templateName))
                {
                    templateName = "template_" + FastRandom.NextString(7);
                }

                var template = RobotTemplate.CreateFromDictionary(templateName, description).ThrowIfNull(ErrorCodes.TemplateError);
                template.Validate().ThrowIfFalse(ErrorCodes.TemplateError);
                _robotTemplateRepository.Insert(template);

                SendRobotTemplateListWhenTransactionCompleted(request);

                scope.Complete();
            }
        }
Exemple #2
0
        public override void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var id       = request.Data.GetOrDefault <int>(k.ID);
                var template = _robotTemplateRepository.Get(id);

                var templateName = request.Data.GetOrDefault <string>(k.name);
                if (!string.IsNullOrEmpty(templateName))
                {
                    template.Name = templateName;
                }

                var description   = request.Data.GetOrDefault <Dictionary <string, object> >(k.description);
                var robotTemplate = RobotTemplate.CreateFromDictionary(templateName, description);
                if (robotTemplate == null)
                {
                    throw new PerpetuumException(ErrorCodes.TemplateError);
                }

                template.EntityDefault = robotTemplate.EntityDefault;
                template.Head          = robotTemplate.Head;
                template.Chassis       = robotTemplate.Chassis;
                template.Leg           = robotTemplate.Leg;
                template.Inventory     = robotTemplate.Inventory;
                if (!template.Validate())
                {
                    throw new PerpetuumException(ErrorCodes.TemplateError);
                }

                _robotTemplateRepository.Update(template);
                SendRobotTemplateListWhenTransactionCompleted(request);

                scope.Complete();
            }
        }