public async Task <ScriptCreated> Handle(CreateScriptCommand request, CancellationToken cancellationToken) { var script = new Script { Id = 0, Name = request.Name, Description = request.Description, GroupName = request.GroupName, Author = request.Author, AccordingTo = request.AccordingTo, Notes = request.Notes, DefaultLanguage = request.DefaultLanguage, Added = _dateTime.Now, Modified = _dateTime.Now, Version = "1" }; RemoveNotAddedTags(request, script); AddNewTags(request, script); await _scriptRepository.AddAsync(script); await _unitOfWork.CompleteAsync(cancellationToken); await _mediator.Publish(new ScriptCreated { Id = script.Id }, cancellationToken); // return Unit.Value; HACK: Needs to be this return(new ScriptCreated { Id = script.Id }); }
public async Task <Response <BaseDto> > AddAsync(ScriptBindingModel scriptBindingModel, string userName) { var result = new Response <BaseDto>(); var lines = scriptBindingModel.Script.Split('\n').Length; var robot = _robotRepository.Get(r => r.Id == scriptBindingModel.RobotId); var user = _userRepository.Get(u => u.Username == userName); var filePath = $@"../Scripts/{userName}/{scriptBindingModel.Name}.rl"; if (user == null) { result.Errors.Add("Something went wrong, please log out and log in to proceed"); return(result); } var player = _playerRepository.Get(p => p.UserId == user.Id); if (robot == null) { result.Errors.Add("The robot you have selected does not exist"); return(result); } if (File.Exists(filePath)) { result.Errors.Add($"A script named {scriptBindingModel.Name} already exists"); return(result); } //try //{ // File.CreateText(filePath); //} //catch (Exception e) //{ // result.Errors.Add(e.Message); // result.Errors.Add(e.InnerException.Message); // return result; //} using (var writer = File.CreateText(filePath)) { try { writer.Write(scriptBindingModel.Script); //or .Write(), if you wish } catch (Exception e) { result.Errors.Add(e.Message); result.Errors.Add(e.InnerException.Message); return(result); } } //here goes script validation var script = new Script { CreatedAt = DateTime.Now, ForRobot = robot, Lines = lines, Name = scriptBindingModel.Name, ServerPath = filePath, Owner = player, UpdatedAt = DateTime.Now, }; var insertResult = await _scriptRepository.AddAsync(script); if (!insertResult) { result.Errors.Add("Something went wrong, please contact DevBots support"); return(result); } return(result); }