public async Task <Result <TickFormulaErrorCodes> > UpdateAsync(ITickFormula model) { var entity = TickFormulaEntity.Create(model); using (var context = _contextFactory.CreateDataContext()) { context.TickFormulas.Update(entity); try { await context.SaveChangesAsync(); return(new Result <TickFormulaErrorCodes>()); } catch (DbUpdateConcurrencyException e) { if (e.Message.Contains(DoesNotExistException)) { return(new Result <TickFormulaErrorCodes>(TickFormulaErrorCodes.TickFormulaDoesNotExist)); } throw; } } }
public async Task <Result <TickFormulaErrorCodes> > UpdateAsync(ITickFormula model, string username, string correlationId) { var currentSettings = await _tickFormulaRepository.GetByIdAsync(model.Id); if (currentSettings == null) { return(new Result <TickFormulaErrorCodes>(TickFormulaErrorCodes.TickFormulaDoesNotExist)); } SetDefaultLadderAndTicksIfNeeded(model); var validationResult = ValidateLaddersAndTicks(model); if (validationResult.IsFailed) { return(validationResult); } var updateResult = await _tickFormulaRepository.UpdateAsync(model); if (updateResult.IsFailed) { return(updateResult); } await _auditService.TryAudit(correlationId, username, currentSettings.Id, AuditDataType.TickFormula, model.ToJson(), currentSettings.ToJson()); await _entityChangedSender.SendEntityEditedEvent <ITickFormula, TickFormulaContract, TickFormulaChangedEvent>( currentSettings, model, username, correlationId); return(new Result <TickFormulaErrorCodes>()); }
public async Task <Result <TickFormulaErrorCodes> > AddAsync(ITickFormula model) { var entity = TickFormulaEntity.Create(model); using (var context = _contextFactory.CreateDataContext()) { context.TickFormulas.Add(entity); try { await context.SaveChangesAsync(); return(new Result <TickFormulaErrorCodes>()); } catch (DbUpdateException e) { if (e.InnerException is SqlException sqlException && sqlException.Number == MsSqlErrorCodes.PrimaryKeyConstraintViolation) { return(new Result <TickFormulaErrorCodes>(TickFormulaErrorCodes.AlreadyExist)); } throw; } } }
public async Task <Result <TickFormulaErrorCodes> > AddAsync(ITickFormula model, string username, string correlationId) { SetDefaultLadderAndTicksIfNeeded(model); var validationResult = ValidateLaddersAndTicks(model); if (validationResult.IsFailed) { return(validationResult); } var addResult = await _tickFormulaRepository.AddAsync(model); if (addResult.IsFailed) { return(addResult); } await _auditService.TryAudit(correlationId, username, model.Id, AuditDataType.TickFormula, model.ToJson()); await _entityChangedSender.SendEntityCreatedEvent <ITickFormula, TickFormulaContract, TickFormulaChangedEvent>( model, username, correlationId); return(new Result <TickFormulaErrorCodes>()); }
public static void SetAssetFieldsFromTickFormula(this Asset asset, ITickFormula tickFormula) { asset.TickFormulaName = tickFormula.Id; asset.TickFormulaDetails.Name = tickFormula.Id; asset.TickFormulaDetails.TickFormulaParameters.Ladders = tickFormula.PdlLadders; asset.TickFormulaDetails.TickFormulaParameters.Values = tickFormula.PdlTicks; }
public static TickFormulaEntity Create(ITickFormula model) { return(new TickFormulaEntity { Id = model.Id, PdlLadders = model.PdlLadders, PdlTicks = model.PdlTicks, }); }
private void SetDefaultLadderAndTicksIfNeeded(ITickFormula model) { if (model.PdlTicks != null && model.PdlTicks.Any() || model.PdlLadders != null && model.PdlLadders.Any()) { return; } model.PdlTicks = new List <decimal> { 0.01M }; model.PdlLadders = new List <decimal> { 0 }; }
private Result <TickFormulaErrorCodes> ValidateLaddersAndTicks(ITickFormula model) { if (model.PdlLadders.Count != model.PdlTicks.Count) { return(new Result <TickFormulaErrorCodes>(TickFormulaErrorCodes.PdlLaddersAndTicksMustHaveEqualLengths)); } if (model.PdlLadders.Any(x => x < 0)) { return(new Result <TickFormulaErrorCodes>(TickFormulaErrorCodes .PdlLaddersValuesMustBeGreaterOrEqualToZero)); } if (model.PdlTicks.Any(x => x <= 0)) { return(new Result <TickFormulaErrorCodes>(TickFormulaErrorCodes.PdlTicksValuesMustBeGreaterThanZero)); } if (model.PdlLadders[0] != 0) { return(new Result <TickFormulaErrorCodes>(TickFormulaErrorCodes.PdlLaddersMustStartFromZero)); } if (!model.PdlLadders.IsAscendingSortedWithNoDuplicates()) { return(new Result <TickFormulaErrorCodes>(TickFormulaErrorCodes .PdlLaddersMustBeInAscendingOrderWithoutDuplicates)); } if (!model.PdlTicks.IsAscendingSorted()) { return(new Result <TickFormulaErrorCodes>(TickFormulaErrorCodes.PdlTicksMustBeInAscendingOrder)); } return(new Result <TickFormulaErrorCodes>()); }