Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #6
0
 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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
 public static Sms FindSmsById(string guid, ISendSMSHostContext db)
 {
     return(FindSmsById(Guid.Parse(guid), db));
 }
Beispiel #10
0
        public static Contact FindOrCreate(ContactDTO contactDTO, ISendSMSHostContext db)
        {
            Contact contact = FindContactById(Guid.Parse(contactDTO.Id), db);

            return(contact ?? new Contact(contactDTO));
        }
Beispiel #11
0
        public static Contact FindContactById(Guid guid, ISendSMSHostContext db)
        {
            Contact contact = db.Contacts.FirstOrDefault(x => x.Id == guid);

            return(contact);
        }
Beispiel #12
0
        public static Status FindStatusById(int Id, ISendSMSHostContext db)
        {
            Status status = db.Status.First(x => x.Id == Id);

            return(status);
        }