// Handles all insert operations. Can insert a new user, portfolio, or holding. public static string Insert(UDMRequest obj) { var context = new userDBContext(); switch (obj.RequestType) { case UDMRequestType.User: context.Add(ConvertToUser(obj.User)); context.SaveChanges(); break; case UDMRequestType.Portfolio: foreach (UDMPortfolio p in obj.Portfolio) { context.Add(ConvertToPortfolio(p)); } context.SaveChanges(); break; case UDMRequestType.Holding: context.Add(ConvertToHolding(obj.Holding)); context.SaveChanges(); break; } string returnMessage = $"Performed {obj.Operation} on {obj.RequestType}"; return(returnMessage); }
public IActionResult PostUserDataForm(UDMUser userDataForm) { UDMUser User = new UDMUser { Email = userDataForm.Email, FirstName = userDataForm.FirstName, LastName = userDataForm.LastName, BrokerageAccount = userDataForm.BrokerageAccount }; UDMRequest request = new UDMRequest { RequestType = UDMRequestType.User, Operation = UDMOperation.Insert, User = User }; try { string result = RMQService.ExecuteRequest(request, "", "", "rpc_queue"); UDMUser info = JsonConvert.DeserializeObject <UDMUser>(result, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All, PreserveReferencesHandling = PreserveReferencesHandling.All }); return(new JsonResult(info)); } catch (Exception ex) { return(new JsonResult(null)); } }
// Reads a user from the db public static string ReadUser(UDMRequest obj) { var context = new userDBContext(); if (!(obj.Email is null)) // If user included an email in the request, read the user that the email belongs to. { var user = context.User.FirstOrDefault(a => a.Email == obj.Email); return(serialize(ConvertToUDMUser(user))); }
private void onReceive(object sender, BasicDeliverEventArgs ea) { if (MessageReceived != null) { var body = ea.Body.ToArray(); var message = Encoding.UTF8.GetString(body); UDMRequest obj = JsonConvert.DeserializeObject <UDMRequest>(message, new JsonSerializerSettings() { PreserveReferencesHandling = PreserveReferencesHandling.All, TypeNameHandling = TypeNameHandling.All }); RequestHandler.MainHandler(obj); MessageReceived.Invoke(this, obj); } }
// Main read method that calls accesory read methods. Can read a user, portfolio, or porfoltio history. public static string Read(UDMRequest obj) { switch (obj.RequestType) { case UDMRequestType.User: return(ReadUser(obj)); case UDMRequestType.Portfolio: return(ReadPortfolio(obj)); case UDMRequestType.PortfolioHistory: return(ReadPortfolioHistory(obj)); } string returnMessage = $"Performed {obj.Operation} on {obj.RequestType}"; return(returnMessage); }
// Calls method that will perform the operation listed in the request. Valid operations include Insert, Read, Update, and Delete. public static string MainHandler(UDMRequest obj) { switch (obj.Operation) { case UDMOperation.Insert: return(Insert(obj)); case UDMOperation.Read: return(Read(obj)); case UDMOperation.Update: return(Update(obj)); case UDMOperation.Delete: return(Delete(obj)); } return(null); }
public async Task <JsonResult> GetPortfolioInfo(string email = "") { UDMRequest request = new UDMRequest() { Operation = UDMOperation.Read, RequestType = UDMRequestType.Portfolio, Email = null }; try { string result = RMQService.ExecuteRequest(request, "backtestTrigger", "backtestTrigger", "rpc_queue"); List <UDMPortfolio> info = JsonConvert.DeserializeObject <List <UDMPortfolio> >(result, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All, PreserveReferencesHandling = PreserveReferencesHandling.All }); return(new JsonResult(info)); } catch (Exception ex) { return(new JsonResult(null)); } }
public static void Main(string[] args) { Console.WriteLine("Starting demo server..."); var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.QueueDeclare(queue: "rpc_queue", durable: false, exclusive: false, autoDelete: true, arguments: null); channel.BasicQos(0, 1, false); var consumer = new EventingBasicConsumer(channel); channel.BasicConsume(queue: "rpc_queue", autoAck: false, consumer: consumer); Console.WriteLine(" [x] Awaiting RPC requests"); consumer.Received += (model, ea) => { string response = null; var body = ea.Body; var props = ea.BasicProperties; var replyProps = channel.CreateBasicProperties(); replyProps.CorrelationId = props.CorrelationId; try { var message = Encoding.UTF8.GetString(body.ToArray()); Console.WriteLine(string.Format(" [.] Received message: {0}", message)); UDMRequest obj = JsonConvert.DeserializeObject <UDMRequest>(message, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All, PreserveReferencesHandling = PreserveReferencesHandling.All }); response = RequestHandler.MainHandler(obj); } catch (Exception ex) { Console.WriteLine(" [.] " + ex.Message); response = ""; } finally { var responseBytes = Encoding.UTF8.GetBytes(response); channel.BasicPublish(exchange: "", routingKey: props.ReplyTo, basicProperties: replyProps, body: responseBytes); channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false); Console.WriteLine(" [.] Response Sent"); } }; Console.WriteLine(" Type 'exit' or 'quit' to exit."); string input; while (true) { input = Console.ReadLine(); if (input.ToLower() == "quit" || input.ToLower() == "exit") { break; } else { Console.WriteLine(" Type 'exit' or 'quit' to exit."); } } } }