public void ClientSendMessageToServer(string ip, int port, string expected) { // arrange var messageArchive = new MessageArchive(); var server = new SocketServer(ip, port); var client = new SocketClient(ip, port); server.SubscribeToReceivingMessage(delegate(TcpClient client, string message) { messageArchive.AddToRchive(client, message); }); //act var threadServer = new Thread(client.StartChat); threadServer.Start(); var threadClient = new Thread(client.StartChat); threadClient.Start(); client.SendMessage(expected); var actual = messageArchive.Archive.First().Value.First(); //assert Assert.Equal(expected, actual); }
public ActionResult DeleteConfirmed(long id) { MessageArchive messagearchive = db.MessageArchives.Find(id); db.MessageArchives.Remove(messagearchive); db.SaveChanges(); return(RedirectToAction("Index")); }
// // GET: /MessageArchive/Details/5 public ActionResult Details(long id = 0) { MessageArchive messagearchive = db.MessageArchives.Find(id); if (messagearchive == null) { return(HttpNotFound()); } return(View(messagearchive)); }
public ActionResult Create(long arcid = 0) { ViewBag.Devices = new SelectList(db.Devices, "ID", "DeviceCode"); if (arcid == 0) { Message message = new Message() { MessageType = 1, Status = 1, ValidFrom = new DateTime(DateTime.Now.Year, 1, 1), ValidTo = new DateTime(DateTime.Now.Year + 1, 12, 31) }; return(View(message)); } else { Message msg = null; MessageArchive arc = db.MessageArchives.Find(arcid); if (arc != null) { msg = new Message() { DeviceID = arc.DeviceID, ExtDate1 = arc.ExtDate1, ExtDate2 = arc.ExtDate2, ExtDate3 = arc.ExtDate3, ExtString1 = arc.ExtString1, ExtString2 = arc.ExtString2, ExtString3 = arc.ExtString3, ExtDec1 = arc.ExtDec1, ExtDec2 = arc.ExtDec2, ExtDec3 = arc.ExtDec3, MessageContent = arc.MessageContent, MessageType = arc.MessageType, Remarks = arc.Remarks, Status = arc.Status, ValidFrom = arc.ValidFrom, ValidTo = arc.ValidTo }; } return(View(msg)); } }
// // GET: /Message/G/5 public string G(string id, string p, string r) { Request request = new Models.Request(); //List<RequestMessage> reqMessages = new List<RequestMessage>(); DateTime now = DateTime.Now; List <string> parts = new List <string>(); string content = null; long foundDeviceID = 0; Device device = null; long requestIndex; if (string.IsNullOrEmpty(r) == false && long.TryParse(r, out requestIndex)) { request.RequestIndex = requestIndex; } if (string.IsNullOrEmpty(id) == false && string.IsNullOrEmpty(p) == false) { device = db.Devices.FirstOrDefault(d => d.DeviceCode == id && d.PassCode == p); if (device != null) { foundDeviceID = device.ID; List <Message> messages = db.Messages.Where(m => m.DeviceID == device.ID && m.Status == 1 && m.ValidFrom <= now && m.ValidTo >= now && (m.RequestIndex.HasValue == false || (request.RequestIndex.HasValue && request.RequestIndex.Value >= (m.RequestIndex.Value - (m.RequestIndexRange.HasValue? m.RequestIndexRange.Value : 5)) && request.RequestIndex.Value <= (m.RequestIndex.Value + (m.RequestIndexRange.HasValue? m.RequestIndexRange.Value : 5))))).ToList(); request.RequestMessages = new List <RequestMessage>(messages.Count); foreach (Message message in messages) { parts.Add(message.MessageContent); request.RequestMessages.Add(new RequestMessage() { MessageID = message.ID, MessageContent = message.MessageContent }); if (message.MessageType == 1) // one-time only { // move to archive MessageArchive archive = new MessageArchive() { DeviceID = message.DeviceID, ExtDate1 = message.ExtDate1, ExtDate2 = message.ExtDate2, ExtDate3 = message.ExtDate3, ExtDec1 = message.ExtDec1, ExtDec2 = message.ExtDec2, ExtDec3 = message.ExtDec3, ExtString1 = message.ExtString1, ExtString2 = message.ExtString2, ExtString3 = message.ExtString3, MessageContent = message.MessageContent, MessageID = message.ID, MessageType = message.MessageType, Remarks = message.Remarks, Status = message.Status, ValidFrom = message.ValidFrom, ValidTo = message.ValidTo, CreationDate = DateTime.Now, RequestIndex = message.RequestIndex }; db.MessageArchives.Add(archive); // delete from Messages db table db.Messages.Remove(message); } } content = string.Join(",", parts.ToArray()); } } request.DeviceID = foundDeviceID; if (foundDeviceID == 0) { request.Remarks = id; } request.Message = content; request.RequestDate = now; db.Requests.Add(request); db.SaveChanges(); #region Record Statistics if (device != null) { // Record statistics DateTime?lastRequestTime = device.LastRequestTime; device.LastRequestId = request.ID; device.LastRequestMessage = request.Message; device.LastRequestTime = request.RequestDate; if (string.IsNullOrEmpty(content) == false) { device.LastCommandIssued = request.Message; device.LastCommandIssueTime = request.RequestDate; } bool dayChanged = true; bool monthChanged = true; bool yearChanged = true; if (lastRequestTime.HasValue) { dayChanged = (lastRequestTime.Value.Day != now.Day); monthChanged = (lastRequestTime.Value.Month != now.Month); yearChanged = (lastRequestTime.Value.Year != now.Year); } DateTime nowTime = new DateTime(1900, 1, 1, now.Hour, now.Minute, now.Second); if (dayChanged) { device.YesterdayEarliestRequestTime = device.TodayEarliestRequestTime; device.TodayEarliestRequestTime = now; device.YesterdayLatestRequestTime = lastRequestTime; if (device.ThisMonthEarliestRequestTime.HasValue == false || new DateTime(1900, 1, 1, device.ThisMonthEarliestRequestTime.Value.Hour, device.ThisMonthEarliestRequestTime.Value.Minute, device.ThisMonthEarliestRequestTime.Value.Second) > nowTime) { device.ThisMonthEarliestRequestTime = now; } if (device.ThisMonthLatestRequestTime.HasValue == false || new DateTime(1900, 1, 1, device.ThisMonthLatestRequestTime.Value.Hour, device.ThisMonthLatestRequestTime.Value.Minute, device.ThisMonthLatestRequestTime.Value.Second) < device.YesterdayLatestRequestTime) { device.ThisMonthLatestRequestTime = device.YesterdayLatestRequestTime; } if (device.TodayRequestCount.HasValue) { device.YesterdayRequestCount = device.TodayRequestCount; } device.TodayRequestCount = 1; if (device.TodayNetworkConnectivity.HasValue) { List <string> pastNetworkConnectivity = new List <string>(30); if (device.Last30DaysNetworkConnectivity != null) { pastNetworkConnectivity.AddRange(device.Last30DaysNetworkConnectivity.Split(new char[] { ',' })); } pastNetworkConnectivity.Add(device.TodayNetworkConnectivity.ToString()); while (pastNetworkConnectivity.Count > 30) { pastNetworkConnectivity.RemoveAt(0); } device.Last30DaysNetworkConnectivity = string.Join(",", pastNetworkConnectivity.ToArray()); } device.TodayNetworkConnectivity = 100; } else { device.TodayRequestCount++; int expectedRequests = Convert.ToInt32(Math.Floor(now.Subtract(device.TodayEarliestRequestTime.Value).TotalMinutes / 2)); // Assume a request every 2 minutes if (expectedRequests == 0) { expectedRequests = 1; } device.TodayNetworkConnectivity = Convert.ToInt32(Math.Floor((double)(device.TodayRequestCount.Value * 100 / expectedRequests))); } if (monthChanged) { device.ThisMonthEarliestRequestTime = now; device.ThisMonthLatestRequestTime = null; if (device.ThisMonthRequestCount.HasValue) { device.LastMonthRequestCount = device.ThisMonthRequestCount; } device.ThisMonthRequestCount = 1; } else { device.ThisMonthRequestCount++; } if (yearChanged) { device.ThisYearRequestCount = 1; } else { device.ThisYearRequestCount++; } db.Entry(device).State = EntityState.Modified; db.SaveChanges(); } #endregion Record Statistics return(content); }