public async Task <IActionResult> SignalArrived(SignalInputModel inputModel) { //you can validate input here //then if the inputmodel is valid then you can save the signal var saveResult = await _signalService.SaveSignalAsync(inputModel); //if you can save the signal you can notify all clients by using SignalHub if (saveResult) { //you might think use a mapping tool? SignalViewModel signalViewModel = new SignalViewModel { Description = inputModel.Description, CustomerName = inputModel.CustomerName, Area = inputModel.Area, Zone = inputModel.Zone, SignalStamp = Guid.NewGuid().ToString() }; var user = signalViewModel.CustomerName; var message = signalViewModel.Description; var date = signalViewModel.SignalStamp; var zone = signalViewModel.Zone; await _hubContext.Clients.All.SendAsync("SignalMessageReceived", user, message, date, zone); // await _hubContext.Clients.All.SendAsync("SignalMessageReceived", signalViewModel); } return(StatusCode(200, saveResult)); }
public async Task <bool> SaveSignalAsync(SignalInputModel inputModel) { try { //map input model to data model //at this point we assume a signal arrives only one time and it's unique SignalDataModel signalModel = new SignalDataModel(); signalModel.CustomerName = inputModel.CustomerName; signalModel.Description = inputModel.Description; signalModel.AccessCode = inputModel.AccessCode; signalModel.Area = inputModel.Area; signalModel.Zone = inputModel.Zone; signalModel.SignalDate = DateTime.Now; //execute some business rules according to your cases. //if you decide to save signal add it to the db context _mainDbContext.Signals.Add(signalModel); //save changes and if the signal has stored in db return true. return(await _mainDbContext.SaveChangesAsync() > 0); } catch (Exception exception) { //log the exception or take some actions return(false); } }
public async Task <IActionResult> SignalArrived(SignalInputModel signalInputModel) { var saveResult = await this._signalService.SavesSignalAsync(signalInputModel); if (saveResult) { var signalViewModel = new SignalViewModel { Description = signalInputModel.Description, CustomerName = signalInputModel.CustomerName, Area = signalInputModel.Area, Zone = signalInputModel.Zone, SignalStamp = Guid.NewGuid().ToString(), }; await this._hubContext.Clients.All.SendAsync("SignalMessageReceived", signalViewModel); } return(StatusCode(200, saveResult)); }
public async Task <bool> SavesSignalAsync(SignalInputModel signalInputModel) { try { var signalDataModel = new SignalDataModel { CustomerName = signalInputModel.CustomerName, Description = signalInputModel.Description, AccessCode = signalInputModel.AccessCode, Area = signalInputModel.Area, Zone = signalInputModel.Zone, SignalDate = DateTime.Now }; this._mainDbContext.Signals.Add(signalDataModel); return(await this._mainDbContext.SaveChangesAsync() > 0); } catch (Exception ex) { return(false); } }
public async Task <IActionResult> SignalArrived(SignalInputModel inputModel) { //you can validate input here //then if the inputModel is valid then you can save the signal var saveResult = await _signalService.SaveSignalAsync(inputModel); if (saveResult) { SignalViewModel signalViewModel = new SignalViewModel { Description = inputModel.Description, CustomerName = inputModel.CustomerName, Area = inputModel.Area, Zone = inputModel.Zone, SignalStamp = Guid.NewGuid().ToString(), }; //notify all clients by using SignalHub await _hubContext.Clients.All.SendAsync("SignalMessageReceived", signalViewModel); } return(StatusCode(200, saveResult)); }
public async Task <IActionResult> SaveSignalAsync(SignalInputModel signal) { try { SignalDataModel data = new SignalDataModel() { AccessCode = signal.AccessCode, Area = signal.Area, CustomerName = signal.CustomerName, Description = signal.Description, SignalDate = DateTime.Now, Zone = signal.Zone }; await uow.SignalRepository.AddAsync(data); if (await uow.SaveChangesAsync() > 0) { SignalVM signalVM = new SignalVM() { AccessCode = signal.AccessCode, Area = signal.Area, CustomerName = signal.CustomerName, Description = signal.Description, SignalDate = data.SignalDate, Zone = signal.Zone }; await this.hubContext.Clients.All.SendAsync("SignalMessageReceived", signalVM); return(Ok()); } return(BadRequest(new { message = "Some error occured." })); } catch (Exception ex) { return(BadRequest(new { message = ex.Message })); } }
public async Task <bool> SaveSignalAsync(SignalInputModel inputModel) { try { SignalDataModel signalModel = new SignalDataModel { CustomerName = inputModel.CustomerName, Description = inputModel.Description, AccessCode = inputModel.AccessCode, Area = inputModel.Area, Zone = inputModel.Zone, SingalDate = DateTime.Now }; // execute some business rules according to your cases _mainDbContext.Signals.Add(signalModel); return(await _mainDbContext.SaveChangesAsync() > 0); } catch (Exception ex) { return(false); } }