コード例 #1
0
 public Responsible[] GetDoublers(Guid responsibleId)
 {
     using (var context = new CleanCityContext())
     {
         var responsible = context.ResponsibleList
                           .Include(x => x.DoublerList)
                           .SingleOrDefault(x => x.Id == responsibleId);
         if (responsible == null)
         {
             return(new Responsible[0]);
         }
         var doublers = responsible.DoublerList;
         if (doublers == null)
         {
             return(new Responsible[0]);
         }
         return(doublers
                .ToList()
                .Select(x => new Responsible
         {
             Id = x.Id,
             Name = x.Name,
             Email = x.Email,
             IsActive = true,
         })
                .ToArray());
     }
 }
コード例 #2
0
 public void AddOrUpdateUser(User user)
 {
     using (var context = new CleanCityContext())
     {
         var sqlUser = context.Users.SingleOrDefault(x => x.UserId == user.UserId);
         if (sqlUser == null)
         {
             context.Users.Add(new UserSql
             {
                 Email    = user.Email,
                 UserId   = user.UserId,
                 Address  = user.Address,
                 Username = user.Username,
             });
             context.SaveChanges();
         }
         else
         {
             sqlUser.Email    = user.Email;
             sqlUser.Username = user.Username;
             sqlUser.Address  = user.Address;
             context.Update(sqlUser);
             context.SaveChanges();
         }
     }
 }
コード例 #3
0
        public Guid AddResponsible(Responsible responsible)
        {
            using (var context = new CleanCityContext())
            {
                // todo(sivukhin, 18.05.2019): Fix data race here
                var sqlResponsible = context.ResponsibleList.SingleOrDefault(x => x.Id == responsible.Id);
                if (sqlResponsible != null)
                {
                    sqlResponsible.Name           = responsible.Name;
                    sqlResponsible.Email          = responsible.Email;
                    sqlResponsible.ResponseRegion = responsible.ResponseRegion;
                    context.Update(sqlResponsible);
                }
                else
                {
                    context.ResponsibleList.Add(new ResponsibleSql
                    {
                        Id             = responsible.Id,
                        Name           = responsible.Name,
                        Email          = responsible.Email,
                        IsActive       = responsible.IsActive,
                        ResponseRegion = responsible.ResponseRegion,
                    });
                }

                context.SaveChanges();
                return(responsible.Id);
            }
        }
コード例 #4
0
 public Guid[] ReadResponsibles()
 {
     using (var context = new CleanCityContext())
     {
         return(context.ResponsibleList.Select(x => x.Id).ToArray());
     }
 }
コード例 #5
0
 public Guid[] ReadUnsentEmails()
 {
     using (var context = new CleanCityContext())
     {
         var email = context.Emails.Where(e => e.IsSent == false).ToArray();
         return(email.Select(x => x.Id).ToArray());
     }
 }
コード例 #6
0
 public Guid[] ReadReports()
 {
     using (var context = new CleanCityContext())
     {
         return(context
                .Reports
                .OrderByDescending(x => x.CreationDate)
                .Select(x => x.Id)
                .ToArray());
     }
 }
コード例 #7
0
 public Report ReadReport(Guid reportId)
 {
     using (var context = new CleanCityContext())
     {
         var rawReport = context.Reports.SingleOrDefault(x => x.Id == reportId);
         if (rawReport == null)
         {
             return(null);
         }
         return(DeserializeObject(rawReport.Payload));
     }
 }
コード例 #8
0
 public Guid[] ReadReportsOfResponsible(Guid responsibleId)
 {
     using (var context = new CleanCityContext())
     {
         return(context
                .Reports
                .OrderByDescending(x => x.CreationDate)
                .Where(x => x.ResponsibleId == responsibleId)
                .Select(x => x.Id)
                .ToArray());
     }
 }
コード例 #9
0
 public EmailMessage ReadEmail(Guid emailId)
 {
     using (var context = new CleanCityContext())
     {
         var email = context.Emails.SingleOrDefault(e => e.Id == emailId);
         if (email == null)
         {
             return(null);
         }
         return(DeserializeEmail(email.Data));
     }
 }
コード例 #10
0
 public Responsible ReadResponsible(Guid responsibleId)
 {
     using (var context = new CleanCityContext())
     {
         var responsible = context.ResponsibleList.SingleOrDefault(r => r.Id == responsibleId);
         if (responsible == null)
         {
             return(null);
         }
         return(ParseFromSql(responsible));
     }
 }
コード例 #11
0
 public void SetEmailProcessed(Guid emailId)
 {
     using (var context = new CleanCityContext())
     {
         var email = context.Emails.SingleOrDefault(e => e.Id == emailId);
         if (email == null)
         {
             return;
         }
         email.IsSent = true;
         context.Emails.Update(email);
         context.SaveChanges();
     }
 }
コード例 #12
0
 public Guid AddEmail(EmailMessage email)
 {
     using (var context = new CleanCityContext())
     {
         var id = Guid.NewGuid();
         context.Emails.Add(new EmailMessageSql
         {
             Id            = id,
             ResponsibleId = email.ResponsibleId,
             Data          = SerializeEmail(email),
             IsSent        = false,
         });
         context.SaveChanges();
         return(id);
     }
 }
コード例 #13
0
 public User GetUser(long chatId)
 {
     using (var context = new CleanCityContext())
     {
         var sqlUser = context.Users.SingleOrDefault(x => x.UserId == chatId);
         if (sqlUser == null)
         {
             return(null);
         }
         return(new User
         {
             Email = sqlUser.Email,
             Address = sqlUser.Address,
             Username = sqlUser.Username,
             UserId = sqlUser.UserId,
         });
     }
 }
コード例 #14
0
 public Guid AddReport(Report report)
 {
     using (var context = new CleanCityContext())
     {
         var reportId = Guid.NewGuid();
         context.Reports.Add(new ReportSql
         {
             Id            = reportId,
             UserId        = report.UserId,
             Body          = report.ReportText,
             CreationDate  = report.CreationDate,
             Subject       = report.Subject,
             Location      = new NpgsqlPoint(report.Location.Latitude, report.Location.Longitude),
             ResponsibleId = report.ResponsibleId,
             Payload       = SerializeReport(report),
         });
         context.SaveChanges();
         return(reportId);
     }
 }
コード例 #15
0
 public void AddDoubler(Guid responsibleId, Responsible doubler)
 {
     using (var context = new CleanCityContext())
     {
         var responsible = context.ResponsibleList.SingleOrDefault(x => x.Id == responsibleId);
         if (responsible == null)
         {
             return;
         }
         var sqlDoubler = new ResponsibleDoublerSql
         {
             Id    = Guid.NewGuid(),
             Name  = doubler.Name,
             Email = doubler.Email,
             OriginalResponsible = responsible
         };
         if (responsible.DoublerList == null)
         {
             responsible.DoublerList = new List <ResponsibleDoublerSql>();
         }
         responsible.DoublerList.Add(sqlDoubler);
         context.SaveChanges();
     }
 }