public static Sms FindOrCreate(SmsDTO smsDTO, ISendSMSHostContext db) { Sms sms = FindSmsById(Guid.Parse(smsDTO.Id), db); if (sms == null) { sms = new Sms() { Id = Guid.Parse(smsDTO.Id), Message = smsDTO.Message, TimeStamp = DateTime.Parse(smsDTO.TimeStamp), Status = Status.FindStatusById(smsDTO.StatusId, db), Contact = Contact.FindOrCreate( new ContactDTO { Id = smsDTO.ContactId, FirstName = smsDTO.ContactFirstName, LastName = smsDTO.ContactLastName, Number = smsDTO.ContactNumber, IsAnonymous = smsDTO.ContactFirstName == "" && smsDTO.ContactLastName == "" }, db) }; } return(sms); }
public static Sms FindSmsById(Guid guid, ISendSMSHostContext db) { Sms sms = db.Sms .Include("Contact") .Include("Status") .FirstOrDefault(x => x.Id == guid); return(sms); }
public ChartData CreateChartData(ISendSMSHostContext db, bool includeDeleted) { List <DateTime> minuteList = new List <DateTime>(); DateTime dateHour = DateTime.Today.AddHours(DateTime.Now.Hour) .AddHours(-1) .AddMinutes(DateTime.Now.Minute + INTERVAL_MINUTES - DateTime.Now.Minute % INTERVAL_MINUTES); for (int i = 0; i < (60 / INTERVAL_MINUTES); i++) { minuteList.Add(dateHour.AddMinutes(i * INTERVAL_MINUTES)); } var lastLogs = db.Log .Where(x => x.Timestamp >= minuteList.Min()) .GroupBy(x => x.SmsId) .Select(y => y.OrderByDescending(z => z.Timestamp).FirstOrDefault()); if (!includeDeleted) { lastLogs = lastLogs.Where(z => z.Operation != "DELETE"); } ; var data = db.Status .Select(s => new { Label = s.Name, Data = minuteList .OrderBy(dt => dt) .Select(h => lastLogs.Count(x => h <= x.Timestamp && x.Timestamp < DbFunctions.AddMinutes(h, INTERVAL_MINUTES) && x.StatusName == s.Name)), BackgroundColor = s.DefaultColorHex }) .AsEnumerable() .Select(d => new DataSet { Label = d.Label, Data = d.Data.ToArray(), BackgroundColor = d.BackgroundColor, BorderColor = Constants.BORDER_COLOR, BorderWidth = Constants.BORDER_WIDTH }) .ToArray(); ChartData chartData = new ChartData { Labels = minuteList.Select(d => d.ToString("HH:mm")).ToArray(), Datasets = data }; return(chartData); }
public static async Task UpdateLog(ISendSMSHostContext db, SmsDTO smsDTO, string operation) { db.Log.Add(new Log { SmsId = smsDTO.Id, Operation = operation, Timestamp = DateTime.Now, StatusName = smsDTO.StatusName }); await db.SaveChangesAsync(); }
public ChartData CreateChartData(ISendSMSHostContext db, bool includeDeleted) { List <DateTime> dateList = new List <DateTime>(); for (int i = 6; i >= 0; i--) { dateList.Add(DateTime.Today.AddDays(-i)); } var lastLogs = db.Log .Where(x => x.Timestamp >= dateList.Min()) .GroupBy(x => x.SmsId) .Select(y => y.OrderByDescending(z => z.Timestamp).FirstOrDefault()); if (!includeDeleted) { lastLogs = lastLogs.Where(z => z.Operation != "DELETE"); } ; var data = db.Status .Select(s => new { Label = s.Name, Data = dateList .OrderBy(dt => dt) .Select(date => lastLogs.Count(x => date <= x.Timestamp && x.Timestamp < DbFunctions.AddDays(date, 1) && x.StatusName == s.Name)), BackgroundColor = s.DefaultColorHex }) .AsEnumerable() .Select(d => new DataSet { Label = d.Label, Data = d.Data.ToArray(), BackgroundColor = d.BackgroundColor, BorderColor = Constants.BORDER_COLOR, BorderWidth = Constants.BORDER_WIDTH }) .ToArray(); ChartData chartData = new ChartData { Labels = dateList.Select(d => d.ToString("ddd dd/MM")).ToArray(), Datasets = data }; return(chartData); }
public Sms(SmsDTO smsDTO, ISendSMSHostContext db) { Id = Guid.Parse(smsDTO.Id ?? Guid.NewGuid().ToString()); Message = smsDTO.Message; TimeStamp = DateTime.Parse(smsDTO.TimeStamp ?? DateTime.Now.ToString()); Status = Status.FindStatusById(smsDTO.StatusId, db); Contact = Contact.FindOrCreate( new ContactDTO { Id = smsDTO.ContactId, FirstName = smsDTO.ContactFirstName, LastName = smsDTO.ContactLastName, Number = smsDTO.ContactNumber, IsAnonymous = smsDTO.ContactFirstName == "" && smsDTO.ContactLastName == "" }, db); }
public ChartData CreateChartData(ISendSMSHostContext db, bool includeDeleted = false) { var lastLogs = db.Log .GroupBy(x => x.SmsId) .Select(y => y.OrderByDescending(z => z.Timestamp) .FirstOrDefault()); if (!includeDeleted) { lastLogs = lastLogs.Where(z => z.Operation != "DELETE"); } ; DataSet dataSet = new DataSet() { Label = "Forever", BorderColor = Constants.BORDER_COLOR, BorderWidth = Constants.BORDER_WIDTH }; var data = db.Status .Select(s => new { Label = s.Name, Data = lastLogs.Count(l => l.StatusName == s.Name), BackgroundColor = s.DefaultColorHex }) .AsEnumerable() .Select(d => new { d.Data, d.Label, d.BackgroundColor }) .ToArray(); dataSet.Data = data.Select(d => d.Data).ToArray(); dataSet.BackgroundColor = data.Select(d => d.BackgroundColor).ToArray(); ChartData chartData = new ChartData { Labels = data.Select(l => l.Label).ToArray(), Datasets = new DataSet[] { dataSet } }; return(chartData); }
public Sms CopyFromSmsDTO(SmsDTO smsDTO, ISendSMSHostContext db) { Message = smsDTO.Message; TimeStamp = DateTime.Parse(smsDTO.TimeStamp); Status = Status.FindStatusById(smsDTO.StatusId, db); Contact contact = Contact.FindOrCreate( new ContactDTO { Id = smsDTO.ContactId, FirstName = smsDTO.ContactFirstName, LastName = smsDTO.ContactLastName, Number = smsDTO.ContactNumber, IsAnonymous = smsDTO.ContactFirstName == "" && smsDTO.ContactLastName == "" }, db); Contact = contact; return(this); }
public static Sms FindSmsById(string guid, ISendSMSHostContext db) { return(FindSmsById(Guid.Parse(guid), db)); }
public static Contact FindOrCreate(ContactDTO contactDTO, ISendSMSHostContext db) { Contact contact = FindContactById(Guid.Parse(contactDTO.Id), db); return(contact ?? new Contact(contactDTO)); }
public static Contact FindContactById(Guid guid, ISendSMSHostContext db) { Contact contact = db.Contacts.FirstOrDefault(x => x.Id == guid); return(contact); }
public static Status FindStatusById(int Id, ISendSMSHostContext db) { Status status = db.Status.First(x => x.Id == Id); return(status); }