Esempio n. 1
0
        public static AspNetUsers GetUserById(string id)
        {
            Repository<AspNetUsers> userRepository = new Repository<AspNetUsers>();

            var user = userRepository.Find(w => w.Id.Equals(id));

            return user;
        }
Esempio n. 2
0
        public string GetFileFromDb(long tableId)
        {
            Repository<Model.TableModels> tablesRepository = new Repository<Model.TableModels>(new OasisProjectDbDataContext());

            var table = tablesRepository.Find(w => w.Id == tableId);

            if (table != null)
            {
                System.IO.File.WriteAllBytes(filePath, table.Content.ToArray());
            }

            return null;
        }
Esempio n. 3
0
        public static long GetSpreadsheetIdByName(string userId, string spreadsheetName)
        {
            //AddLog("GetSpreadsheetIdByName");
            IRepository<Model.TableModels> spreadsheetRepository = new Repository<TableModels>();

            var spreadsheet =
                spreadsheetRepository.Find(w => w.Name.Equals(spreadsheetName) && w.AuthorId_Id.Equals(userId));

            if (spreadsheet != null)
                return spreadsheet.Id;

            return 0;
        }
Esempio n. 4
0
        public bool SaveFileToDb(string filePath, long tableId)
        {
            byte[] file;
            using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                using (var reader = new BinaryReader(stream))
                {
                    file = reader.ReadBytes((int)stream.Length);
                }
            }
            Repository<Model.TableModels> tablesRepository = new Repository<Model.TableModels>(new OasisProjectDbDataContext());

            var table = tablesRepository.Find(w => w.Id == tableId);

            if (table != null)
            {
                table.Content = file;

                tablesRepository.Commit();
            }

            return false;
        }
Esempio n. 5
0
 public int ForLocalTestReceive(long id)
 {
     Repository<Model.EmailModels> emailsRepository = new Repository<Model.EmailModels>();
     var email = emailsRepository.Find(w => w.Id == id);
     var subject = email.Subject;
     var content = email.Content;
     var contentHtml = email.ContentHtml;
     Oasis.Models.MailinData.MailEnvelope envelope = new MailinData.MailEnvelope() { From = "*****@*****.**", To = "*****@*****.**" };
     Oasis.Models.MailinData.MailHeaders headers = new MailinData.MailHeaders() { Date = DateTime.Now, Subject = subject };
     Receive(new Oasis.Models.MailinData() { Envelope = envelope, Headers = headers, Plain = content, Html = contentHtml });
     return 1;
 }
Esempio n. 6
0
        private bool IsUserAdmin(string userId, long spreadsheetId)
        {
            Repository<Model.TableModels> spreadsheetRepository = new Repository<TableModels>();

            var spreadsheet = spreadsheetRepository.Find(w => w.Id == spreadsheetId && w.AdministratorId_Id.Equals(userId));

            return spreadsheet != null;
        }
Esempio n. 7
0
        public ActionResult EditSpreadsheet(TableModels model)
        {
            try
            {
                var userId = UserHelper.GetUserByEmail(User.Identity.Name).Id;

                if (ModelState.IsValid && IsUserAdmin(userId, model.Id))
                {
                    var dateTime = DateTime.Now;

                    Repository<Model.TableModels> spreadsheetRepository = new Repository<Model.TableModels>();

                    var spreadsheet = spreadsheetRepository.Find(w => w.Id == model.Id);

                    if (spreadsheet != null)
                    {
                        spreadsheet.Name = model.Name;
                    }

                    spreadsheetRepository.Commit();

                    long brandNewTable =
                        spreadsheetRepository.Find(w => w.AuthorId_Id == userId && w.CreationDate == dateTime).Id;

                    return RedirectToAction("Spreadsheet", new { id = brandNewTable });
                }
            }
            catch (Exception)
            {
            }

            return RedirectToAction("ManageSpreadsheets");
        }
Esempio n. 8
0
        public ActionResult EditSpreadsheet(long id)
        {
            var userId = UserHelper.GetUserByEmail(User.Identity.Name).Id;

            if (IsUserAdmin(userId, id))
            {
                Repository<Model.TableModels> spreadsheetRepository = new Repository<TableModels>();

                var spreadsheet = spreadsheetRepository.Find(w => w.Id == id);

                if (spreadsheet != null)
                {
                    ViewBag.SpreadsheetId = id;

                    return View(spreadsheet);
                }
            }

            return RedirectToAction("ManageSpreadsheets");
        }
Esempio n. 9
0
        public async Task<ActionResult> RegisterByInvite(RegisterByInviteViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {

                    // если создание прошло успешно, то добавляем роль пользователя
                    await UserManager.AddToRoleAsync(user.Id, UserRoles.Redactors.ToString());

                    await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);

                    // Дополнительные сведения о том, как включить подтверждение учетной записи и сброс пароля, см. по адресу: http://go.microsoft.com/fwlink/?LinkID=320771
                    // Отправка сообщения электронной почты с этой ссылкой
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Подтверждение учетной записи", "Подтвердите вашу учетную запись, щелкнув <a href=\"" + callbackUrl + "\">здесь</a>");

                    Repository<AspNetUsers> userRepository = new Repository<AspNetUsers>();

                    var newUser = userRepository.Find(w => w.Email.Equals(model.Email));

                    if (newUser != null && newUser.CloudmailinEmail == null)
                    {
                        newUser.CloudmailinEmail = string.Format(Constants.PathConstants.Email,
                            newUser.Email.Replace("@", "at"));
                        if (newUser.Units == 0)
                        {
                            newUser.Units = 1;
                        }
                        userRepository.Commit();
                        if (model.adminEmail != null)
                        {
                            var admin = userRepository.Find(a => a.Email == SendMailHelper.Decrypt(model.adminEmail));                     
                            var redactor = new Model.TableRedactorModels()
                            {
                                Administrator_Id = admin.Id,
                                TableId = -1,
                                UserId_Id = newUser.Id
                            };
                            redactorsRepository.Commit();
                        }
                    }

                    return RedirectToAction("Index", "Home");
                }
                AddErrors(result);
            }

            // Появление этого сообщения означает наличие ошибки; повторное отображение формы
            return View(model);
        }
Esempio n. 10
0
        private static void ParseEmailData(long emailId, long ruleId)
        {
            // AddLog("ParseEmailData");
            IRepository<EmailModels> emailRepository = new Repository<EmailModels>();

            var email = emailRepository.Find(w => w.Id == emailId);

            if (email != null)
            {
                int row = -1;

                List<int> rows = new List<int>();

                IRepository<EmailParsingRulesModels> emailParsingRulesRepository = new Repository<EmailParsingRulesModels>();

                var emailParsingRule = emailParsingRulesRepository.Find(w => w.Id == ruleId);

                if (emailParsingRule != null)
                {
               //     AddLog("emailParsingRule != null");
                    List<Models.TablesList> tablesList = new List<Models.TablesList>();

                    IRepository<Model.SaveEmailProperty> saveEmailPropertiesRepository = new Repository<Model.SaveEmailProperty>();
                    var allDefaultValues = saveEmailPropertiesRepository.FindAll(i => i.EmailParsingRulesModelsId == emailParsingRule.Id).ToList();

                    IRepository<Model.TableModels> tablesRepository = new Repository<TableModels>();

                    IRepository<EmailDataParsingRulesModels> emailDataParsingRulesRepository =
                        new Repository<EmailDataParsingRulesModels>();

                    var emailDataParsingRules =
                        emailDataParsingRulesRepository.FindAll(
                            w => w.EmailParsingRulesModelsId_Id == emailParsingRule.Id &&
                                 w.Status.Equals(Model.Enums.RuleStatusEnums.Active.ToString())).OrderBy(r => r.Name).ToList();

                    if (emailDataParsingRules != null && emailDataParsingRules.Count != 0)
                    {
                       // AddLog("emailDataParsingRules.Count != 0");
                        foreach (var dataParsingRule in emailDataParsingRules)
                        {
                            if (tablesList.Find(w => w.TableId == dataParsingRule.TableId_Id && w.IsChecked) == null && dataParsingRule.Status != Model.Enums.RuleStatusEnums.Paused.ToString())
                            {
                                var name = dataParsingRule.TableId_Id.ToString();
                                var path = SpreadsheetHelper.GetSpreadsheetPathById((long)dataParsingRule.TableId_Id);

                                try
                                {
                                    SpreadsheetExtension.LoadDocument(name, path);
                                    IWorkbook workbook = SpreadsheetExtension.GetCurrentDocument(name);

                                    Worksheet worksheet =
                                        workbook.Worksheets[
                                            emailParsingRule.EmailDataParsingRulesModels.FirstOrDefault().Worksheet];

                                    if (emailParsingRule.IsUpdatingRule)
                                    {
                                        var changing =
                                            emailParsingRule.EmailDataParsingRulesModels.FirstOrDefault(
                                                w =>
                                                    w.IsUpdatindIndex &&
                                                    w.EmailParsingRulesModelsId_Id == emailParsingRule.Id);
                                        var changingIndex = BeforeParseValueFromEmail(email, changing);

                                        if (path != null)
                                        {
                                            foreach (var c in worksheet.Columns[dataParsingRule.Column].ExistingCells)
                                            {
                                                var value = c.Value.ToString();

                                                if (value.Equals(changingIndex))
                                                {
                                                    row = c.RowIndex;
                                                    rows.Add(row);
                                                }
                                            }
                                            byte[] size = workbook.SaveDocument(DocumentFormat.Xlsx);
                                            tablesRepository.Find(t => t.Id == dataParsingRule.TableId_Id).Size = size.Length;
                                            tablesRepository.Commit();
                                            workbook.SaveDocument(path);
                                            SpreadsheetExtension.CloseDocument(name);
                                        }
                                    }
                                    else
                                    {
                                        worksheet.Rows.Insert(1);
                                        row = 1;
                                    }

                                    if (row != -1)
                                    {
                                        var author_Id = emailParsingRule.AuthorId_Id;
                                        foreach (var defaultValue in allDefaultValues)
                                        {
                                            if (emailParsingRule.Status != Model.Enums.RuleStatusEnums.Paused.ToString())
                                            {
                                                InsertEmailLink(emailId, defaultValue, row, author_Id, emailParsingRule.CopyRuleFromPreviousOrder);
                                            }
                                        }
                                        foreach (
                                            var dataParsing in
                                                emailParsingRule.EmailDataParsingRulesModels.Where(
                                                    w => w.TableId_Id == dataParsingRule.TableId_Id))
                                        {
                                            if (dataParsing.Status != Model.Enums.RuleStatusEnums.Paused.ToString())
                                            {
                                                if (emailParsingRule.IsUpdatingRule)
                                                {
                                                    foreach (var rowForUpdate in rows)
                                                    {
                                                        ParseCellValue(email, dataParsing, rowForUpdate, emailParsingRule.CopyRuleFromPreviousOrder);
                                                    }
                                                    rows.Clear();
                                                }
                                                else
                                                {
                                                    ParseCellValue(email, dataParsing, row, emailParsingRule.CopyRuleFromPreviousOrder);
                                                }
                                            }
                                        }

                                        tablesList.Add(new TablesList
                                        {
                                            IsChecked = true,
                                            TableId = (long)dataParsingRule.TableId_Id
                                        });
                                    }
                                }
                                catch
                                {
                                    AddLog("Table not found");
                                }
                            }
                        }
                    }
                    else if (allDefaultValues != null)
                    {
                        var tablesInallDefaultValues = allDefaultValues.GroupBy(a => a.TableId).Select(g => g.First());
                        foreach (var defaultValue in tablesInallDefaultValues)
                        {
                            try
                            {
                            var name = tablesRepository.Find(w => w.Name == defaultValue.TableId && w.AuthorId_Id == emailParsingRule.AuthorId_Id).Name;
                            var path = SpreadsheetHelper.GetSpreadsheetPathById(tablesRepository.Find(w => w.Name == defaultValue.TableId && w.AuthorId_Id == emailParsingRule.AuthorId_Id).Id);
                                SpreadsheetExtension.LoadDocument(name, path);

                                IWorkbook workbook = SpreadsheetExtension.GetCurrentDocument(name);

                                Worksheet worksheet =
                                    workbook.Worksheets[
                                        Convert.ToInt32(defaultValue.Worksheet)];

                                worksheet.Rows.Insert(1);
                                row = 1;

                                byte[] size = workbook.SaveDocument(DocumentFormat.Xlsx);
                                tablesRepository.Find(w => w.Name == defaultValue.TableId && w.AuthorId_Id == emailParsingRule.AuthorId_Id).Size = size.Length;
                                tablesRepository.Commit();

                                workbook.SaveDocument(path);

                                SpreadsheetExtension.CloseDocument(name);
                            }
                            catch (Exception ex)
                            {
                                AddLog(ex.Message);
                            }
                        }
                        foreach (var defaultValue in allDefaultValues)
                         {
                             InsertEmailLink(emailId, defaultValue, row, emailParsingRule.AuthorId_Id, emailParsingRule.CopyRuleFromPreviousOrder);
                         }
                    }
                }
            }
        }
Esempio n. 11
0
        private static void ParseEmail(long emailId, string userId)
        {
            // AddLog("ParseEmail" + "emailId: " + emailId.ToString() + "userId:  " + userId.ToString());
            IRepository<EmailModels> emailRepository = new Repository<EmailModels>();

            var email = emailRepository.Find(w => w.Id == emailId);
            //AddLog("Email: " + email.Content);
            if (email != null)
            {
              //  AddLog("email != null");
                IRepository<EmailParsingRulesModels> emailParsingRulesRepository = new Repository<EmailParsingRulesModels>();

                var emailParsingRules = emailParsingRulesRepository.FindAll(w => w.AuthorId_Id.Equals(userId) && w.Status.Equals(Model.Enums.RuleStatusEnums.Active.ToString())).OrderBy(j => j.Name).ToList();

                if (emailParsingRules != null && emailParsingRules.Any())
                {
                 //   AddLog("emailParsingRules != null && emailParsingRules.Any()");

                    foreach (var rule in emailParsingRules)
                    {
                        if (rule.Email.Contains(email.From))
                        {
                            bool b = true;

                            if (rule.Subject != null)
                            {
                                if (!email.Subject.Equals(rule.Subject))
                                {
                                    b = false;
                                }
                            }

                            if (b && rule.PlainContains != null)
                            {
                                if (!email.Content.Contains(rule.PlainContains))
                                {
                                    b = false;
                                }
                            }
                          //  AddLog(rule.IsUpdatingRule.ToString());
                            if (b)
                                ParseEmailData(emailId, rule.Id);
                        }
                    }
                }
            }
        }
Esempio n. 12
0
        private static void InsertEmailLink(long emailId, Model.SaveEmailProperty parsingRule, int row, string author_Id, bool CopyRuleFromPreviousOrder)
        {
            try
            {
            IRepository < Model.TableModels > tablesRepository = new Repository<TableModels>();
            var tableId = tablesRepository.Find(w => w.Name==parsingRule.TableId && w.AuthorId_Id == author_Id).Id;
               // AddLog(tableId.ToString());
            var worksheetId = Convert.ToInt32(parsingRule.Worksheet);
            var column = (int)Enum.Parse(typeof(ColumnEnums), parsingRule.Column);

                var path = SpreadsheetHelper.GetSpreadsheetPathById(tableId);

                if (path != null)
                {
                    IRepository<TableModels> spreadsheetRepository = new Repository<TableModels>();

                    var name = spreadsheetRepository.Find(w => w.Id == tableId).Name;
                    SpreadsheetExtension.LoadDocument(name, path);
                    IWorkbook workbook = SpreadsheetExtension.GetCurrentDocument(name);

                    if (workbook.Worksheets.Count < worksheetId + 1)
                    {
                        int startWorksheets = workbook.Worksheets.Count;

                        for (int i = 0; i < worksheetId - startWorksheets + 1; i++)
                        {
                            workbook.Worksheets.Add();
                        }
                    }

                    Worksheet worksheet = workbook.Worksheets[worksheetId];

                    var cell = worksheet.Cells[row, column];

                    //     AddLog("InsertEmailLink - " + "worksheet.Cells[" + row + ", " + column+"];");
                    if (parsingRule.SaveEmailProp != null)
                    {
                        worksheet.Hyperlinks.Add(cell, "javascript:OpenPopup(" + emailId + ")", false, "O");
                        cell.CopyFrom(worksheet.Cells[row + 1, column], PasteSpecial.Formats);
                    }
                    else if (parsingRule.DefaultValue != null)
                    {
                        if (CopyRuleFromPreviousOrder)
                        {
                            worksheet.Cells[row, column].CopyFrom(worksheet.Cells[row + 1, column], PasteSpecial.Formats);
                        }
                        worksheet.Cells[row, column].Value = parsingRule.DefaultValue;
                    }
                    byte[] size = workbook.SaveDocument(DocumentFormat.Xlsx);
                    tablesRepository.Find(w => w.Id == tableId).Size = size.Length;
                    tablesRepository.Commit();
                    workbook.SaveDocument(path);
                    SpreadsheetExtension.CloseDocument(name);
                }
            }
            catch
            {
            }
        }
Esempio n. 13
0
 public static string GetPartOfPageForLangById(string id, string lang)
 {
     InternationalizationRepository = new Repository<InternationalizationPartsOfPage>();
     var currentRow = InternationalizationRepository.Find(c => c.ID.IndexOf(id)>-1);
     string result = (string)currentRow.GetType().GetProperties().Where(p => p.Name.ToLower().Contains(lang)).FirstOrDefault().GetValue(currentRow, null);
     return result==null ? "":result.ToString();
 }