示例#1
0
 public static bool SendMessageParams(OutlookContext context, Message msg, int id, string email, Dictionary <string, int> addresses)
 {
     foreach (string user in addresses.Keys)
     {
         if (user.Length == 0)
         {
             continue;
         }
         if (user.Equals(email))
         {
             continue;
         }
         List <User> dest   = context.Users.Where(x => x.EmailAddress.Equals(user)).ToList();
         int         DestId = dest[0].Id;
         if (context.MessageReceivers.Where(x => x.MessageId == msg.Id && x.UserId == DestId).ToList().Count == 0)
         {
             MessageReceiver msgrec = new MessageReceiver();
             msgrec.MessageId   = msg.Id;
             msgrec.UserId      = DestId;
             msgrec.ReceiveType = addresses[user];
             msgrec.Read        = false;
             context.MessageReceivers.Add(msgrec);
         }
     }
     return(true);
 }
 public CategoriesController(
     IMapper mapper,
     OutlookContext context)
 {
     this.mapper  = mapper;
     this.context = context;
 }
示例#3
0
 public ValidationResult Validate(OutlookContext context, int id, string email)
 {
     Addresses.Clear();
     if (CC.Length == 0 && BCC.Length == 0 && Direct.Length == 0)
     {
         return(new ValidationResult("Error: No addresses provided!"));
     }
     string[] CCs     = CC.Split(';');
     string[] BCCs    = BCC.Split(';');
     string[] Directs = Direct.Split(';');
     (bool dis1, ValidationResult v1) = CheckExistence(context, id, email, Directs, "Error in direct", 0);
     if (v1 != ValidationResult.Success)
     {
         return(v1);
     }
     (bool dis2, ValidationResult v2) = CheckExistence(context, id, email, CCs, "Error in CCs", 1);
     if (v2 != ValidationResult.Success)
     {
         return(v2);
     }
     (bool dis3, ValidationResult v3) = CheckExistence(context, id, email, BCCs, "Error in BCCs", 2);
     if (v3 != ValidationResult.Success)
     {
         return(v3);
     }
     return(ValidationResult.Success);
 }
示例#4
0
        public void Group()
        {
            var options = new DbContextOptionsBuilder <OutlookContext>()
                          .UseInMemoryDatabase(databaseName: "NetOutlookDatabaseMock")
                          .Options;
            ValidationResult testResult;

            using (var context = new OutlookContext(options))
            {
                ClearContext(context);
                context.Users.Add(new User {
                    Name = "Adam", Surname = "Kowalski", EmailAddress = "*****@*****.**"
                });
                context.Users.Add(new User {
                    Name = "Jurgen", Surname = "Kowalski", EmailAddress = "*****@*****.**"
                });
                context.Users.Add(new User {
                    Name = "Janusz", Surname = "Kowalski", EmailAddress = "*****@*****.**"
                });
                context.Groups.Add(new Group {
                    GroupName = "Kowalscy", OwnerId = 2
                });
                context.GroupMembers.Add(new GroupMember {
                    GroupId = 1, UserId = 1
                });
                context.SaveChanges();
                NewMessageModel model = new NewMessageModel();
                model.Direct = "g:Kowalscy;[email protected]";
                model.CC     = "";
                model.BCC    = "";
                testResult   = model.Validate(context, 2, "*****@*****.**");
            }
            Assert.AreEqual(testResult, ValidationResult.Success);
        }
示例#5
0
        public void InvalidAddresses()
        {
            var options = new DbContextOptionsBuilder <OutlookContext>()
                          .UseInMemoryDatabase(databaseName: "NetOutlookDatabaseMock")
                          .Options;
            ValidationResult testResult;

            using (var context = new OutlookContext(options))
            {
                ClearContext(context);
                context.Users.Add(new User {
                    Name = "Adam", Surname = "Kowalski", EmailAddress = "*****@*****.**"
                });
                context.Users.Add(new User {
                    Name = "Jurgen", Surname = "Kowalski", EmailAddress = "*****@*****.**"
                });
                context.SaveChanges();
                NewMessageModel model = new NewMessageModel();
                model.Direct = "[email protected];;;a;;";
                model.CC     = "";
                model.BCC    = "";
                testResult   = model.Validate(context, 2, "*****@*****.**");
            }
            Assert.AreNotEqual(testResult, ValidationResult.Success);
        }
        public ValidationResult Validate(OutlookContext context, int id, string email)
        {
            Addresses.Clear();
            if (Emails.Length == 0)
            {
                return(new ValidationResult("Error: No addresses provided!"));
            }
            if (GroupName.Length == 0)
            {
                return(new ValidationResult("Error: No Group Name provided!"));
            }
            if (GroupName.StartsWith("g:"))
            {
                return(new ValidationResult("Error: Invalid Group Name, start with 'g:' is not allowed"));
            }
            if (GroupName.Contains(";"))
            {
                return(new ValidationResult("Error: Invalid Group Name, using ';' is not allowed"));
            }
            if (context.Groups.Where(g => g.GroupName == GroupName && g.OwnerId == id).ToList().Count > 0)
            {
                return(new ValidationResult("Error: Invalid Group Name, you have already group with the same name"));
            }
            string[] EmailsTab = Emails.Split(';');
            (bool dis1, ValidationResult v1) = CheckExistence(context, id, email, EmailsTab, "Error in group members", 0);
            if (v1 != ValidationResult.Success)
            {
                return(v1);
            }


            return(ValidationResult.Success);
        }
示例#7
0
 public IssuesController(
     OutlookContext context,
     IMapper mapper)
 {
     this.context = context;
     this.mapper  = mapper;
 }
示例#8
0
 public void ClearContext(OutlookContext context)
 {
     context.GroupMembers.RemoveRange(context.GroupMembers);
     context.MessageReceivers.RemoveRange(context.MessageReceivers);
     context.Users.RemoveRange(context.Users);
     context.Groups.RemoveRange(context.Groups);
     context.Messages.RemoveRange(context.Messages);
     context.SaveChanges();
 }
示例#9
0
        protected (bool, ValidationResult) CheckExistence(OutlookContext context, int id, string email, string[] addresses, string err_prefix, int send_type)
        {
            bool distinct = false;

            foreach (string user in addresses)
            {
                if (user.Length == 0)
                {
                    continue;
                }
                if (user.Equals(email))
                {
                    continue;
                }
                if (user.StartsWith("g:"))
                {
                    string group = user.Substring(2);
                    Group  g     = context.Groups.FirstOrDefault(x => (x.GroupName == group && x.OwnerId == id));
                    if (g == null)
                    {
                        return(false, new ValidationResult($"{err_prefix}: Group {group} doesn't exist!"));
                    }
                    List <string> members = context.GetUsersFromGroup(g.Id);
                    foreach (string member in members)
                    {
                        Debug.WriteLine(member);
                        if (Addresses.ContainsKey(member))
                        {
                            if (Addresses[member] != send_type)
                            {
                                return(false, new ValidationResult($"{err_prefix}: User {member} from {group} has multiple delivery rules. Remove unnecesary rules!"));
                            }
                        }
                        Addresses[member] = send_type;
                    }
                    distinct = true;
                }
                else
                {
                    User u = context.Users.FirstOrDefault(x => x.EmailAddress == user);
                    if (u == null)
                    {
                        return(false, new ValidationResult($"{err_prefix}: User {user} doesn't exist!"));
                    }
                    if (Addresses.ContainsKey(user))
                    {
                        if (Addresses[user] != send_type)
                        {
                            return(false, new ValidationResult($"{err_prefix}: User {user} has multiple delivery rules. Remove unnecesary rules!"));
                        }
                    }
                    Addresses[user] = send_type;
                    distinct        = true;
                }
            }
            return(distinct, ValidationResult.Success);
        }
示例#10
0
        public MembersController(
            OutlookContext context,
            MemberService memberService)
        {
            this.context       = context;
            this.memberService = memberService;
            logger             = Logger.Logger.Instance(Logger.Logger.LogField.server);

            // Save the List of categories names to be accessed
            Categories = context.Category.Select(c => c.Name).ToList();
        }
示例#11
0
 public CommentsController(
     OutlookContext context,
     IdentityService identityService,
     IMapper mapper,
     IHubContext <ArticleHub, IArticleHub> articleHub)
 {
     this.context         = context;
     this.identityService = identityService;
     this.mapper          = mapper;
     this.articleHub      = articleHub;
     logger = Logger.Logger.Instance(Logger.Logger.LogField.web);
 }
示例#12
0
 public DataFactory(
     OutlookContext context,
     UserManager <OutlookUser> userManager,
     SignInManager <OutlookUser> signInManager,
     RoleManager <IdentityRole> roleManager,
     IConfiguration configuration)
 {
     this.context       = context;
     this.userManager   = userManager;
     this.signInManager = signInManager;
     this.roleManager   = roleManager;
     Configuration      = configuration;
 }
示例#13
0
 public AddUserModel(
     UserManager <OutlookUser> userManager,
     SignInManager <OutlookUser> signInManager,
     ILogger <RegisterModel> logger,
     IEmailSender emailSender,
     OutlookContext context)
 {
     _userManager   = userManager;
     _signInManager = signInManager;
     _logger        = logger;
     _emailSender   = emailSender;
     this.logger    = Logger.Logger.Instance(Logger.Logger.LogField.server);
     this.context   = context;
 }
示例#14
0
 public ArticlesController(
     OutlookContext context,
     IMapper mapper,
     IdentityService identityService,
     IHubContext <ArticleHub, IArticleHub> articlehub,
     IWebHostEnvironment env, IConfiguration configuration)
 {
     this.context         = context;
     this.mapper          = mapper;
     this.identityService = identityService;
     this.env             = env;
     this.configuration   = configuration;
     this.configuration   = configuration;
     hubContext           = articlehub;
     logger = Logger.Logger.Instance(Logger.Logger.LogField.userArticles);
 }
        protected (bool, ValidationResult) CheckExistence(OutlookContext context, int id, string email, string[] addresses, string err_prefix, int send_type)
        {
            char[] charsToTrim = { '\t', ' ', '\n' };
            bool   distinct    = false;

            foreach (string userT in addresses)
            {
                string user = userT.Trim(charsToTrim);
                if (user.Length == 0)
                {
                    continue;
                }
                if (user.Equals(email))
                {
                    continue;
                }
                if (user.StartsWith("g:"))
                {
                    //string group = user.Substring(2);
                    Group g = context.Groups.FirstOrDefault(x => (x.GroupName == user && x.OwnerId == id));
                    if (g == null)
                    {
                        return(false, new ValidationResult($"{err_prefix}: Group {user} doesn't exist!"));
                    }

                    Addresses.Add(user);
                    distinct = true;
                }
                else
                {
                    User u = context.Users.FirstOrDefault(x => x.EmailAddress == user);
                    if (u == null)
                    {
                        return(false, new ValidationResult($"{err_prefix}: User {user} doesn't exist!"));
                    }

                    Addresses.Add(user);
                    distinct = true;
                }
            }
            return(distinct, ValidationResult.Success);
        }
示例#16
0
        public ArticlesController(
            OutlookContext context,
            IWebHostEnvironment env,
            ArticleService articleService)
        {
            this.context        = context;
            this.env            = env;
            this.articleService = articleService;

            logger = Logger.Logger.Instance(Logger.Logger.LogField.server);

            // Save the List of wrtiers names to be accessed
            Writers = context.Member
                      .Select(m => m.Name)
                      .ToList();

            // Save the List of categories names to be accessed
            Categories = context.Category
                         .Select(c => c.Name)
                         .ToList();
        }
示例#17
0
 public IssuesController(OutlookContext context, IWebHostEnvironment env)
 {
     this.context = context;
     this.env     = env;
     logger       = Logger.Logger.Instance(Logger.Logger.LogField.server);
 }
 public HomeController(ILogger <HomeController> logger, OutlookContext context)
 {
     _logger      = logger;
     this.context = context;
 }
        public static List <GroupMember> GroupManagerParams(OutlookContext context, Group gr, int id, string email, HashSet <string> addresses)
        {
            HashSet <string>   emailsToGroup = new HashSet <string>();
            List <GroupMember> groupMembers  = new List <GroupMember>();

            foreach (string user in addresses)
            {
                if (user.Length == 0)
                {
                    continue;
                }
                if (user.Equals(email))
                {
                    continue;
                }
                if (!user.StartsWith("g:") && emailsToGroup.Add(user))
                {
                    List <User> dest   = context.Users.Where(x => x.EmailAddress.Equals(user)).ToList();
                    int         DestId = dest[0].Id;

                    GroupMember grmem = new GroupMember();
                    grmem.GroupId = gr.Id;
                    grmem.UserId  = DestId;
                    grmem.User    = dest[0];
                    grmem.Group   = gr;

                    groupMembers.Add(grmem);
                    context.GroupMembers.Add(grmem);
                }
                else
                {
                    string             group     = user.Substring(2);
                    List <Group>       dest      = context.Groups.Where((x => x.GroupName.Equals(group) && x.OwnerId == id)).ToList();
                    List <GroupMember> receivers = dest[0].Members.ToList();
                    foreach (GroupMember gm in receivers)
                    {
                        if (gm.UserId == id)
                        {
                            continue;
                        }
                        if (!emailsToGroup.Add(gm.User.EmailAddress))
                        {
                            continue;
                        }

                        List <User> dest2  = context.Users.Where(x => x.Id == gm.UserId).ToList();
                        int         DestId = dest2[0].Id;

                        GroupMember grmem = new GroupMember();
                        grmem.GroupId = gr.Id;
                        grmem.UserId  = DestId;
                        grmem.User    = dest2[0];
                        grmem.Group   = gr;

                        groupMembers.Add(grmem);
                        context.GroupMembers.Add(grmem);
                    }
                }
            }
            return(groupMembers);
        }
示例#20
0
 public HomeController(OutlookContext context)
 {
     this.context = context;
 }
 public UsersController(ILogger <UsersController> logger, OutlookContext context)
 {
     this.logger  = logger;
     this.context = context;
 }
 public NewMessageController(ILogger <NewMessageController> logger, OutlookContext context)
 {
     _logger      = logger;
     this.context = context;
 }
示例#23
0
 public GroupManagerController(ILogger <GroupManagerController> logger, OutlookContext context)
 {
     _logger      = logger;
     this.context = context;
 }
示例#24
0
 public InboxController(ILogger <InboxController> logger, OutlookContext context)
 {
     _logger      = logger;
     this.context = context;
 }
示例#25
0
 public ArticleService(OutlookContext context)
 {
     this.context = context;
 }
示例#26
0
 public VolumesController(OutlookContext context)
 {
     this.context = context;
     logger       = Logger.Logger.Instance(Logger.Logger.LogField.server);
 }
示例#27
0
 public AdminPageController(ILogger <AdminPageController> logger, OutlookContext context)
 {
     _logger      = logger;
     this.context = context;
 }