Beispiel #1
0
 public RichTextAttachment GetRichTextAttachment(Guid id)
 {
     using (VistosDbContext ctx = new VistosDbContext())
     {
         return(ctx.RichTextAttachment.First(x => x.UniqueGuid == id));
     }
 }
 public List <vwParticipant> GetVwParticipants(int dbObjectId, int recordId)
 {
     using (VistosDbContext ctx = new VistosDbContext())
     {
         return(ctx.vwParticipant.Where(x => x.DbObject_Id == dbObjectId && x.Participant_RecordId == recordId).ToList().Distinct().ToList());
     }
 }
 public void VwUserAuthTokenListReset()
 {
     using (VistosDbContext ctx = new VistosDbContext())
     {
         vwUserAuthTokenList = ctx.vwUserAuthToken.ToList().Distinct().ToList();
     }
 }
        public JsonResult ThumbnailAvatarUploadImage(string userToken)
        {
            UserInfo userInfo = GetUserInfoFromUserToken(userToken);

            try
            {
                if (userInfo != null && Request.Form.Files != null && Request.Form.Files.Count > 0)
                {
                    for (int i = 0; i < Request.Form.Files.Count; i++)
                    {
                        IFormFile file = Request.Form.Files[i];

                        if (file.Length > 0)
                        {
                            byte[] byteArray = null;
                            using (MemoryStream ms = new MemoryStream())
                            {
                                file.CopyTo(ms);
                                byteArray = ms.ToArray();
                            }

                            if (byteArray != null && byteArray.Length > 0)
                            {
                                byte[] resizeArr = ImageTool.ResizeImage(byteArray, new System.Drawing.Size(200, 200));
                                using (VistosDbContext ctx = new VistosDbContext())
                                {
                                    UserAvatar userAvatar = new UserAvatar()
                                    {
                                        Deleted      = false,
                                        Created      = DateTime.Now,
                                        Modified     = DateTime.Now,
                                        CreatedBy_FK = userInfo.UserId,
                                        Avatar       = resizeArr
                                    };
                                    ctx.UserAvatar.Add(userAvatar);
                                    ctx.SaveChanges();

                                    var staleItem = Url.Action("GetThumbnailAvatar", "VistosApi", new
                                    {
                                        id = userInfo.UserId
                                    });
                                    //**Response.RemoveOutputCacheItem(staleItem);

                                    return(Json(new { id = userAvatar.Id }));
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.SaveLogError(LogLevel.Error, "ThumbnailAvatarUploadImage", ex, null, userInfo);
            }
            return(null);
        }
 static void Main(string[] args)
 {
     Console.WriteLine("Hello World!");
     using (VistosDbContext ctx = new VistosDbContext())
     {
         List <UserAvatar>      ts               = ctx.UserAvatar.Where(t => t.Deleted == false).ToList();
         List <vwRole>          vwRole1          = ctx.vwRole.ToList();
         List <vwUserAuthToken> vwUserAuthToken1 = ctx.vwUserAuthToken.ToList();
         string s = "";
     }
     List <vwRole> vwRole2 = Settings.GetInstance.VwRoleList;
 }
        public static void SaveLogError(LogLevel logLevel, string message, Exception ex, ApiRequest request, UserInfo userInfo)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine(message);
            if (request != null)
            {
                try
                {
                    sb.AppendLine();
                    sb.AppendLine("ApiRequest");
                    sb.AppendLine("------------------------------------------");
                    sb.AppendLine(JsonConvert.SerializeObject(request, Formatting.Indented));
                }
                catch (Exception ex1)
                {
                    string s = ex1.Message;
                }
            }
            if (userInfo != null)
            {
                try
                {
                    sb.AppendLine();
                    sb.AppendLine("UserInfo");
                    sb.AppendLine("-----------------------------------------");
                    sb.AppendLine(JsonConvert.SerializeObject(userInfo, Formatting.Indented));
                }
                catch (Exception ex1)
                {
                    string s = ex1.Message;
                }
            }

            using (VistosDbContext ctx = new VistosDbContext())
            {
                Log log = new Log()
                {
                    Time        = DateTime.Now,
                    Application = "Vistos v3",
                    Level       = logLevel.ToString(),
                    Message     = sb.ToString(),
                    RequestGuid = request != null ? request.RequestGuid : null,
                    Exception   = ex != null?ex.ToString() : null,
                                      StackTrace = ex != null ? ex.StackTrace : null
                };
                ctx.Log.Add(log);
                ctx.SaveChanges();
            }
        }
Beispiel #7
0
 public string SaveNewRichTextAttachment(byte[] byteArray, UserInfo userInfo)
 {
     using (VistosDbContext ctx = new VistosDbContext())
     {
         RichTextAttachment att = new RichTextAttachment();
         att.Deleted      = false;
         att.Created      = DateTime.Now;
         att.Modified     = DateTime.Now;
         att.CreatedBy_FK = userInfo.UserId;
         att.Content      = byteArray;
         att.UniqueGuid   = Guid.NewGuid();
         ctx.RichTextAttachment.Add(att);
         ctx.SaveChanges();
         return(att.UniqueGuid.ToString());
     }
 }
        public List <ReminderSettings> GetReminderSettings(Int32?dbObjectId = null)
        {
            Expression <Func <ReminderSettings, bool> > expr = x => !x.Deleted;

            if (dbObjectId.HasValue)
            {
                expr = x => !x.Deleted && x.DbObject_FK.HasValue && (x.DbObject_FK == dbObjectId.Value);
            }

            using (VistosDbContext ctx = new VistosDbContext())
            {
                //                return ctx.ReminderSettings.Include(rs => rs.Reminder && rs.Reminder.de).Where(expr).ToList();
                //**return ctx.ReminderSettings.Include(x => x.Reminder).Where(expr).ToList().Distinct().ToList();
                return(ctx.ReminderSettings.Where(expr).ToList().Distinct().ToList());
            }
        }
 public static void SaveLogWarn(string requestGuid, string message)
 {
     using (VistosDbContext ctx = new VistosDbContext())
     {
         Log log = new Log()
         {
             Time        = DateTime.Now,
             Application = "Vistos v3",
             Level       = LogLevel.Warning.ToString(),
             Message     = message,
             RequestGuid = requestGuid
         };
         ctx.Log.Add(log);
         ctx.SaveChanges();
     }
 }
        public ActionResult GetSignatureImageByGuid(string id)
        {
            Guid      guid      = !string.IsNullOrEmpty(id) ? Guid.Parse(id) : Guid.Empty;
            Signature signature = null;

            using (VistosDbContext ctx = new VistosDbContext())
            {
                signature = ctx.Signature.Where(s => !s.Deleted && s.UniqueGuid == guid).FirstOrDefault();
            }
            MemoryStream ms = null;

            if (signature != null && signature.Id > 0)
            {
                ms = new MemoryStream(signature.Bitmap);
                return(new FileStreamResult(ms, "image/jpeg"));
            }
            return(NotFound());
        }
 private void CheckEnumerationDict(string typeName)
 {
     if (!enumerationDict.ContainsKey(typeName))
     {
         using (VistosDbContext ctx = new VistosDbContext())
         {
             int typeId = ctx.EnumerationType.Where(t => !t.Deleted && t.Type.ToLower() == typeName.ToLower()).Select(t => t.Id).FirstOrDefault();
             if (typeId > 0)
             {
                 enumerationDict.GetOrAdd(typeName, ctx.Enumeration.Where(e => !e.Deleted && e.EnumerationType_FK.Value == typeId).ToList());
             }
             else
             {
                 enumerationDict.GetOrAdd(typeName, new List <Enumeration>());
             }
         }
     }
 }
        public ActionResult DownloadEmailAttachment(int attachmentId, string userToken)
        {
            UserInfo userInfo = GetUserInfoFromUserToken(userToken);

            try
            {
                EmailAttachment emailAttachment = null;
                using (VistosDbContext ctx = new VistosDbContext())
                {
                    emailAttachment = ctx.EmailAttachment.FirstOrDefault(a => a.Id == attachmentId && !a.Deleted);
                }
                if (emailAttachment != null && emailAttachment.Id > 0)
                {
                    if (emailAttachment.Data == null && emailAttachment.DataLength > 0 && emailAttachment.Email_FK.HasValue)
                    {
                        if (emailAttachment.StoredInDropbox)
                        {
                            DropBoxService dropBox          = new DropBoxService(Settings.GetInstance.SystemSettings.DropBoxSecurityToken);
                            Uri            dropBoxAttachUri = dropBox.GetUriEmailAttachment(emailAttachment.Email_FK.Value, emailAttachment.Id, emailAttachment.FileName);
                            return(new RedirectResult(dropBoxAttachUri.ToString(), false));
                        }
                        else
                        {
                            // Refresh attachment content from IMAP server
                            //**Service.Model.EmailViewModel model = new Service.Model.EmailViewModel(emailAttachment.Email_FK.Value, userInfo);
                            //**model.RefreshAttachmentsFromIMAP();

                            using (VistosDbContext ctx = new VistosDbContext())
                            {
                                emailAttachment = ctx.EmailAttachment.FirstOrDefault(a => a.Id == attachmentId && !a.Deleted);
                            }
                        }
                    }

                    return(File(emailAttachment.Data, emailAttachment.Type, emailAttachment.FileName));
                }
            }
            catch (Exception ex)
            {
                Logger.SaveLogError(LogLevel.Error, "Execute", ex, null, null);
            }
            return(NotFound());
        }
Beispiel #13
0
 public async Task SaveAudit()
 {
     try
     {
         if (auditDB.Operation == "GetPage" ||
             auditDB.Operation == "Delete" ||
             auditDB.Operation == "GetById" ||
             auditDB.Operation == "Save" ||
             auditDB.Operation == "Create" ||
             auditDB.Operation == "Login" ||
             auditDB.Operation == "Remove" ||
             auditDB.Operation == "GetCalendarData" ||
             auditDB.Operation == "UpdateCalendarData" ||
             auditDB.Operation == "SaveLayout" ||
             auditDB.Operation == "SaveGridSettings" ||
             auditDB.Operation == "MassActionGrid" ||
             auditDB.Operation == "AddSignature" ||
             auditDB.Operation == "UpdateCalendarData" ||
             auditDB.Operation == "CreateEntityFrom" ||
             auditDB.Operation == "MassActionUpdate" ||
             auditDB.Operation == "AddExistingManyToMany" ||
             auditDB.Operation == "SaveAccessRights" ||
             auditDB.Operation == "ResetLayout" ||
             auditDB.Operation == "SaveLocalization" ||
             auditDB.Operation == "SaveAccessRightsColumns" ||
             auditDB.Operation == "SaveDiscussionMessage" ||
             auditDB.Operation == "EditDiscussionMessage" ||
             auditDB.Operation == "RestartAPI" ||
             auditDB.Operation == "CleanCache"
             )
         {
             using (VistosDbContext ctx = new VistosDbContext())
             {
                 ctx.Audit.Add(auditDB);
                 await ctx.SaveChangesAsync();
             }
         }
     }
     catch (Exception ex)
     {
         // LOG ERR
     }
 }
        private Settings()
        {
            IConfigurationRoot configuration = new ConfigurationBuilder()
                                               .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                                               .AddJsonFile("appsettings.json")
                                               .Build();

            dbConnectionString = configuration.GetConnectionString("DefaultConnection");

            queryBuilderScripts    = new ConcurrentDictionary <string, ConcurrentDictionary <int, ConcurrentDictionary <string, ConcurrentDictionary <string, string> > > >();
            vwProjectionDict       = new ConcurrentDictionary <int, List <vwProjection> >();
            crmEntityDict          = new ConcurrentDictionary <string, CrmEntity>();
            vwProjectionColumnDict = new ConcurrentDictionary <int, ConcurrentDictionary <string, List <vwProjectionColumn> > >();
            enumerationDict        = new ConcurrentDictionary <string, List <Enumeration> >();
            vwLocalizationDict     = new ConcurrentDictionary <string, ConcurrentDictionary <string, Dictionary <string, string> > >();

            schemaDict = new ConcurrentDictionary <int, string>();
            menuDict   = new ConcurrentDictionary <int, string>();

            using (VistosDbContext ctx = new VistosDbContext())
            {
                projectionReportList                = ctx.ProjectionReport.ToList().Distinct().ToList();
                vwProjectionActionList              = ctx.vwProjectionAction.ToList().Distinct().ToList();
                vwProjectionRelationList            = ctx.vwProjectionRelation.ToList().Distinct().ToList();
                vwProjectionActionColumnMappingList = ctx.vwProjectionActionColumnMapping.ToList().Distinct().ToList();
                vwProjectionList         = ctx.vwProjection.ToList().Distinct().ToList();
                crmEntityList            = ctx.CrmEntity.ToList().Distinct().ToList();
                vwProjectionColumnList   = ctx.vwProjectionColumn.ToList().Distinct().ToList();
                systemSettings           = ctx.vwSystemSettings.First();
                localizationLanguageList = ctx.LocalizationLanguage.ToList().Distinct().ToList();

                vwUserAuthTokenList = ctx.vwUserAuthToken.ToList().Distinct().ToList();
                vwUserList          = ctx.vwUser.ToList().Distinct().ToList();
                vwRoleList          = ctx.vwRole.ToList().Distinct().ToList();
                vwBusinessUnitList  = ctx.vwBusinessUnit.ToList().Distinct().ToList();
                vwNumberingSequence = ctx.vwNumberingSequence.ToList().Distinct().ToList();
                if (this.SystemSettings.PohodaConnectorEnabled)
                {
                    vwPohodaDbObjectConfigurationList = ctx.vwPohodaDbObjectConfiguration.ToList().Distinct().ToList();
                }
            }
        }
 //**[ResponseCache(Duration = 600, VaryByQueryKeys = new string[] { "id" })]
 public ActionResult GetThumbnailAvatar(int id)
 {
     if (id > 0)
     {
         UserAvatar userAvatar = null;
         using (VistosDbContext ctx = new VistosDbContext())
         {
             vwUser vwUser1 = ctx.vwUser.Where(u => u.Id == id).FirstOrDefault();
             if (vwUser1 != null && vwUser1.Id > 0 && vwUser1.User_Avatar_FK.HasValue)
             {
                 userAvatar = ctx.UserAvatar.Where(ua => ua.Id == vwUser1.User_Avatar_FK.Value).FirstOrDefault();
             }
         }
         if (userAvatar != null && userAvatar.Id > 0 && userAvatar.Avatar != null && userAvatar.Avatar.Length > 0)
         {
             MemoryStream ms = null;
             ms = new MemoryStream(userAvatar.Avatar);
             return(new FileStreamResult(ms, "image/jpeg"));
         }
     }
     return(File(Url.Content("~/Data/profil-default.jpg"), "image/jpeg"));
 }
        public Dictionary <string, string> GetLocalizations(string areaName, string language)
        {
            if (vwLocalizationDict == null)
            {
                vwLocalizationDict = new ConcurrentDictionary <string, ConcurrentDictionary <string, Dictionary <string, string> > >();
            }

            if (!vwLocalizationDict.ContainsKey(areaName) || !vwLocalizationDict[areaName].ContainsKey(language))
            {
                using (VistosDbContext ctx = new VistosDbContext())
                {
                    var projectionColumnLocalizations = ctx.vwLocalization
                                                        .Where(x => (x.LocalizationArea_Name == areaName && x.LocalizationLanguage_Name == language)).ToList();

                    if (!vwLocalizationDict.ContainsKey(areaName))
                    {
                        vwLocalizationDict.GetOrAdd(areaName, new ConcurrentDictionary <string, Dictionary <string, string> >());
                    }
                    if (!vwLocalizationDict[areaName].ContainsKey(language))
                    {
                        vwLocalizationDict[areaName].GetOrAdd(language, new Dictionary <string, string>());
                    }

                    // zpracovani vychozich lokalizaci na projekci
                    projectionColumnLocalizations.ForEach(x =>
                    {
                        if (!vwLocalizationDict[areaName][language].ContainsKey(x.LocalizationString_Key))
                        {
                            vwLocalizationDict[areaName][language].Add(x.LocalizationString_Key, x.LocalizationString_Value);
                        }
                    });
                }
            }

            return(vwLocalizationDict[areaName][language]);
        }
        public ActionResult Preview(
            int id
            , string entityName
            , string userToken
            )
        {
            UserInfo userInfo = GetUserInfoFromUserToken(userToken);

            try
            {
                if (userInfo != null)
                {
                    if (entityName.ToLower() == "document")
                    {
                        List <DocumentAttachment> docAttachmentList = new List <DocumentAttachment>();

                        using (VistosDbContext ctx = new VistosDbContext())
                        {
                            docAttachmentList = ctx.DocumentAttachment.Where(d => !d.Deleted && d.Document_FK == id).ToList();
                        }

                        if (docAttachmentList.Count == 1)
                        {
                            DocumentAttachment att = docAttachmentList.Single();

                            if (att.StoreInFtp)
                            {
                                FtpService ftpService = new FtpService(
                                    Settings.GetInstance.SystemSettings.FtpType
                                    , Settings.GetInstance.SystemSettings.FtpHost
                                    , Settings.GetInstance.SystemSettings.FtpPort
                                    , Settings.GetInstance.SystemSettings.FtpUserName
                                    , Settings.GetInstance.SystemSettings.FtpPassword
                                    , Settings.GetInstance.SystemSettings.FtpPrivateKey
                                    , Settings.GetInstance.SystemSettings.FtpPassPhrase
                                    , Settings.GetInstance.SystemSettings.FtpRoot
                                    );
                                byte[] content = ftpService.DownloadDocAttachment(att.Id, att.DocName);

                                MemoryStream dataStream = new MemoryStream();
                                dataStream.Write(content, 0, content.Length);
                                dataStream.Position = 0;
                                return(new FileStreamResult(dataStream, att.ContentType));
                            }
                            else if (att.StoreInDropBox)
                            {
                                DropBoxService dropBox          = new DropBoxService(Settings.GetInstance.SystemSettings.DropBoxSecurityToken);
                                Uri            dropBoxAttachUri = dropBox.GetUriDocAttachment(att.Id, att.DocName);
                                return(new RedirectResult(dropBoxAttachUri.ToString(), false));
                            }
                            else
                            {
                                MemoryStream dataStream = new MemoryStream();
                                dataStream.Write(att.Attachment, 0, att.Attachment.Length);
                                dataStream.Position = 0;
                                return(new FileStreamResult(dataStream, att.ContentType));
                            }
                        }
                    }
                }
                return(NotFound());
            }
            catch (Exception ex)
            {
                return(NotFound());

                throw;
            }
        }
        public ActionResult Download(
            int id
            , string entityName
            , string userToken
            )
        {
            UserInfo userInfo = GetUserInfoFromUserToken(userToken);

            try
            {
                if (userInfo != null)
                {
                    if (entityName.ToLower() == "document")
                    {
                        List <DocumentAttachment> docAttachmentList = new List <DocumentAttachment>();

                        using (VistosDbContext ctx = new VistosDbContext())
                        {
                            docAttachmentList = ctx.DocumentAttachment.Where(d => !d.Deleted && d.Document_FK == id).ToList();
                        }

                        if (docAttachmentList.Count == 1)
                        {
                            DocumentAttachment att = docAttachmentList.Single();

                            if (att.StoreInFtp)
                            {
                                FtpService ftpService = new FtpService(
                                    Settings.GetInstance.SystemSettings.FtpType
                                    , Settings.GetInstance.SystemSettings.FtpHost
                                    , Settings.GetInstance.SystemSettings.FtpPort
                                    , Settings.GetInstance.SystemSettings.FtpUserName
                                    , Settings.GetInstance.SystemSettings.FtpPassword
                                    , Settings.GetInstance.SystemSettings.FtpPrivateKey
                                    , Settings.GetInstance.SystemSettings.FtpPassPhrase
                                    , Settings.GetInstance.SystemSettings.FtpRoot
                                    );
                                byte[] content = ftpService.DownloadDocAttachment(att.Id, att.DocName);
                                return(File(content, att.ContentType, att.DocName));
                            }
                            else if (att.StoreInDropBox)
                            {
                                DropBoxService dropBox          = new DropBoxService(Settings.GetInstance.SystemSettings.DropBoxSecurityToken);
                                Uri            dropBoxAttachUri = dropBox.GetUriDocAttachment(att.Id, att.DocName);
                                return(new RedirectResult(dropBoxAttachUri.ToString(), false));
                            }
                            else
                            {
                                return(File(att.Attachment, att.ContentType, att.DocName));
                            }
                        }
                        else
                        {
                            using (MemoryStream str = new MemoryStream())
                            {
                                using (ZipArchive zipFile = new ZipArchive(str, ZipArchiveMode.Update, false))
                                {
                                    foreach (DocumentAttachment att in docAttachmentList)
                                    {
                                        byte[] content;

                                        if (att.StoreInFtp)
                                        {
                                            FtpService ftpService = new FtpService(
                                                Settings.GetInstance.SystemSettings.FtpType
                                                , Settings.GetInstance.SystemSettings.FtpHost
                                                , Settings.GetInstance.SystemSettings.FtpPort
                                                , Settings.GetInstance.SystemSettings.FtpUserName
                                                , Settings.GetInstance.SystemSettings.FtpPassword
                                                , Settings.GetInstance.SystemSettings.FtpPrivateKey
                                                , Settings.GetInstance.SystemSettings.FtpPassPhrase
                                                , Settings.GetInstance.SystemSettings.FtpRoot
                                                );
                                            content = ftpService.DownloadDocAttachment(att.Id, att.DocName);
                                        }
                                        else if (att.StoreInDropBox)
                                        {
                                            DropBoxService dropBox = new DropBoxService(Settings.GetInstance.SystemSettings.DropBoxSecurityToken);
                                            content = dropBox.DownloadDocAttachment(att.Id, att.DocName);
                                        }
                                        else
                                        {
                                            content = att.Attachment;
                                        }

                                        if (content != null)
                                        {
                                            ZipArchiveEntry zipEntry = zipFile.CreateEntry(att.DocName);
                                            using (MemoryStream originalFileStream = new MemoryStream(content))
                                            {
                                                using (Stream zipEntryStream = zipEntry.Open())
                                                {
                                                    originalFileStream.CopyTo(zipEntryStream);
                                                }
                                            }
                                        }
                                    }
                                }
                                return(File(str.ToArray(), "application/octet-stream", "Download.zip"));
                            }
                        }
                    }
                }
                return(NotFound());
            }
            catch (Exception ex)
            {
                return(NotFound());

                throw;
            }
        }
        public ActionResult AddEmailAttachment(string userToken)
        {
            List <object> list     = new List <object>();
            UserInfo      userInfo = GetUserInfoFromUserToken(userToken);

            try
            {
                if (Request.Form.Files != null && Request.Form.Files.Count > 0)
                {
                    for (int i = 0; i < Request.Form.Files.Count; i++)
                    {
                        IFormFile file = Request.Form.Files[i];

                        if (file.Length > 0)
                        {
                            byte[] byteArray = null;
                            using (MemoryStream ms = new MemoryStream())
                            {
                                file.CopyTo(ms);
                                byteArray = ms.ToArray();
                            }

                            if (byteArray != null && byteArray.Length > 0)
                            {
                                EmailAttachment item = new EmailAttachment();
                                item.Deleted      = false;
                                item.Created      = DateTime.Now;
                                item.CreatedBy_FK = userInfo.UserId;
                                item.Modified     = DateTime.Now;
                                item.FileName     = file.FileName;
                                item.Data         = byteArray;
                                item.DataLength   = byteArray.Length;
                                item.Type         = file.ContentType;

                                using (VistosDbContext ctx = new VistosDbContext())
                                {
                                    ctx.EmailAttachment.Add(item);
                                    ctx.SaveChanges();

                                    list.Add(new
                                    {
                                        Id         = item.Id,
                                        FileName   = item.FileName,
                                        DataLength = item.DataLength,
                                        Type       = item.ContentType,
                                        Deleted    = false
                                    });
                                }
                            }
                        }
                    }
                }
                return(Json(list.ToArray()));
            }
            catch (Exception ex)
            {
                Logger.SaveLogError(LogLevel.Error, "Execute", ex, null, userInfo);
            }
            return(new ContentResult()
            {
                Content = "AttachmentUploadError", ContentType = "text/html"
            });
        }
Beispiel #20
0
        public ApiResponse Execute()
        {
            try
            {
                if (this.userInfo == null)
                {
                    if (request.LoginParam != null)
                    {
                        var repository = new DbRepository(this.auditService);
                        var json       = repository.Login(request.LoginParam.UserName, request.LoginParam.Password);

                        if (!String.IsNullOrEmpty(json))
                        {
                            Settings.GetInstance.VwUserAuthTokenListReset();
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }

                        return(responseBuilder.ReturnRepositoryResponseInvalidLogin(""));
                    }
                    return(responseBuilder.ReturnRepositoryResponseUnauthenticated(""));
                }
                else
                {
                    if (request.GetGridCountParam != null)
                    {
                        if (service.IsAllowedCallQueryBuilder(request.GetGridCountParam.EntityName, OperationAccessRightsEnum.GetPageParam))
                        {
                            try
                            {
                                var json = service.GetGridCount(request.GetGridCountParam);
                                return(responseBuilder.ReturnRepositoryResponseOK(json));
                            }
                            catch (Exception ex)
                            {
                                Logger.SaveLogError(LogLevel.Error, this.ToString(), ex, request, userInfo);
                                return(responseBuilder.ReturnRepositoryResponseWarning("{}", "ERROR_LOAD_DATAGRID_RECORDS"));
                            }
                        }
                        return(responseBuilder.ReturnRepositoryResponseWarning("{}", "ERROR_LOAD_DATAGRID_RECORDS"));
                    }

                    if (request.GetPageParam != null)
                    {
                        if (service.IsAllowedCallQueryBuilder(request.GetPageParam.EntityName, OperationAccessRightsEnum.GetPageParam))
                        {
                            try
                            {
                                var json = service.GetPage(request.GetPageParam);
                                return(responseBuilder.ReturnRepositoryResponseOK(json));
                            }
                            catch (Exception ex)
                            {
                                Logger.SaveLogError(LogLevel.Error, this.ToString(), ex, request, userInfo);
                                return(responseBuilder.ReturnRepositoryResponseWarning("{}", "ERROR_LOAD_DATAGRID_RECORDS"));
                            }
                        }
                        return(responseBuilder.ReturnRepositoryResponseUnauthorized());
                    }

                    if (request.MoveEmailsToFolderParam != null)
                    {
                        var json = service.MoveEmailsToFolder(request.MoveEmailsToFolderParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.GetRsReportList != null)
                    {
                        try
                        {
                            var json = service.GetReports(); //repository.GetReports();
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        catch (Exception ex)
                        {
                            Logger.SaveLogError(LogLevel.Error, this.ToString(), ex, request, userInfo);
                            return(responseBuilder.ReturnRepositoryResponseError(ex.Message));
                        }
                    }
                    if (request.GetGridIdsParam != null)
                    {
                        if (service.IsAllowedCallQueryBuilder(request.GetGridIdsParam.EntityName, OperationAccessRightsEnum.GetGridIdsParam))
                        {
                            var json = service.GetGridIds(request.GetGridIdsParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.GetByIdParam != null)
                    {
                        if (service.IsAllowedCallQueryBuilder(request.GetByIdParam.EntityName, OperationAccessRightsEnum.GetByIdParam) || request.GetByIdParam.EntityId == 0)
                        {
                            String json = service.GetById(request.GetByIdParam, false);
                            return(responseBuilder.ReturnRepositoryResponseOK(json, ""));
                        }

                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.GetByIdSimpleParam != null)
                    {
                        if (service.IsAllowedCallQueryBuilder(request.GetByIdSimpleParam.EntityName, OperationAccessRightsEnum.GetByIdParam) || request.GetByIdSimpleParam.EntityId == 0)
                        {
                            String json = service.GetById(request.GetByIdSimpleParam, true);
                            return(responseBuilder.ReturnRepositoryResponseOK(json, ""));
                        }

                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.ImportParam != null)
                    {
                        if (request.ImportParam.Data != null)
                        {
                            if (service.IsAllowedCallQueryBuilder(request.ImportParam.ProjectionName, OperationAccessRightsEnum.SaveParam))
                            {
                                var json = service.Import(request.ImportParam);
                                return(responseBuilder.ReturnRepositoryResponseOK(json));
                            }
                            return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                        }
                    }
                    if (request.GetAutocompleteParam != null)
                    {
                        if (service.IsAllowedCallQueryBuilder(request.GetAutocompleteParam.EntityName, OperationAccessRightsEnum.GetAutocompleteParam))
                        {
                            var json = service.GetItemsForAutocomplete(request.GetAutocompleteParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.GetEntityFilteredParam != null)
                    {
                        if (service.IsAllowedCallQueryBuilder(request.GetEntityFilteredParam.EntityName, OperationAccessRightsEnum.GetEntityFilteredParam))
                        {
                            var json = service.GetByFilter(request.GetEntityFilteredParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.GetEntityListParam != null)
                    {
                        var json = service.GetEntityList(request.GetEntityListParam);

                        if (!String.IsNullOrEmpty(json))
                        {
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        else
                        {
                            return(responseBuilder.ReturnRepositoryResponseError("EntityList is empty!"));
                        }
                    }
                    if (request.GetMenu != null)
                    {
                        var json = service.GetMenu();
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.GetMerkInfoRegNumberParam != null)
                    {
                        var json = service.GetMerkInfoRegNumber(request.GetMerkInfoRegNumberParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.GetMerkSuggestParam != null)
                    {
                        var json = service.GetMerkSuggest(request.GetMerkSuggestParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.GetEmailFoldersParam != null)
                    {
                        var json = service.GetEmailFolders();
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.GetSchema != null)
                    {
                        var json = service.GetSchema();
                        if (String.IsNullOrEmpty(json))
                        {
                            return(responseBuilder.ReturnRepositoryResponseError("Get schema error"));
                        }

                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.GetEnumerationParam != null)
                    {
                        var json = service.GetEnumerationByType(request.GetEnumerationParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.GetCategoriesByProjectionNameParam != null)
                    {
                        var json = service.GetCategoriesByProjectionName(request.GetCategoriesByProjectionNameParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.GdprDeleteDataParam != null)
                    {
                        if (request.GdprDeleteDataParam.Columns != null)
                        {
                            if (service.IsAllowedCallQueryBuilder(request.GdprDeleteDataParam.EntityName, OperationAccessRightsEnum.SaveParam))
                            {
                                var json = service.GdprDeleteData(request.GdprDeleteDataParam);
                                return(responseBuilder.ReturnRepositoryResponseOK(json));
                            }
                            return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                        }
                    }
                    if (request.SaveParam != null)
                    {
                        if (request.SaveParam.Data != null)
                        {
                            IList <ValidationError> errList = new List <ValidationError>();
                            JObject jsonToValidate          = (JObject)request.SaveParam.Data.DeepClone();
                            if (!jsonToValidate.Validate(request.SaveParam.EntityName, this.userInfo, out errList) || (errList != null && errList.Count > 0))
                            {
                                Logger.SaveLogError(LogLevel.JsonValidationError, errList, new System.ArgumentException("Json Validation Error - Update"), request, userInfo);
                                responseBuilder.ReturnRepositoryResponseInvalidJson(errList);
                            }
                            if (service.IsAllowedCallQueryBuilder(request.SaveParam.EntityName, OperationAccessRightsEnum.SaveParam))
                            {
                                var json = service.UpdateRecord(request.SaveParam);
                                return(responseBuilder.ReturnRepositoryResponseOK(json));
                            }
                            return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                        }
                    }
                    if (request.SetEmailIsReadParam != null)
                    {
                        var json = service.SetEmailIsRead(request.SetEmailIsReadParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.SetEmailsIsReadParam != null)
                    {
                        var json = service.SetEmailsIsRead(request.SetEmailsIsReadParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.SetEmailFolderIsReadParam != null)
                    {
                        var json = service.SetEmailFolderIsRead(request.SetEmailFolderIsReadParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.SetEmailIsLinkedWithVistosParam != null)
                    {
                        var json = service.SetEmailIsLinkedWithVistos(request.SetEmailIsLinkedWithVistosParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.SetEmailIsFlaggedParam != null)
                    {
                        var json = service.SetEmailIsFlagged(request.SetEmailIsFlaggedParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.MassActionGridParam != null)
                    {
                        if (!string.IsNullOrEmpty(request.MassActionGridParam.ActionName))
                        {
                            if (service.IsAllowedCallQueryBuilder(request.MassActionGridParam.EntityName, OperationAccessRightsEnum.MassActionGridParam))
                            {
                                var json = service.MassAction(request.MassActionGridParam);
                                return(responseBuilder.ReturnRepositoryResponseOK(json));
                            }
                            return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                        }
                    }
                    if (request.RemoveParam != null)
                    {
                        if (service.IsAllowedCallQueryBuilder(request.RemoveParam.EntityName, OperationAccessRightsEnum.RemoveParam))
                        {
                            var json = service.Remove(request.RemoveParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.MassRemoveParam != null)
                    {
                        if (service.IsAllowedCallQueryBuilder(request.MassRemoveParam.EntityName, OperationAccessRightsEnum.RemoveParam))
                        {
                            var json = service.MassRemove(request.MassRemoveParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.CreateParam != null)
                    {
                        if (request.CreateParam.EntityName == "Log")
                        {
                            return(responseBuilder.ReturnRepositoryResponseOK(null, ""));
                        }

                        if (request.CreateParam.Data != null)
                        {
                            IList <ValidationError> errList = new List <ValidationError>();
                            JObject jsonToValidate          = (JObject)request.CreateParam.Data.DeepClone();
                            if (!jsonToValidate.Validate(request.CreateParam.EntityName, this.userInfo, out errList) || (errList != null && errList.Count > 0))
                            {
                                Logger.SaveLogError(LogLevel.JsonValidationError, errList, new System.ArgumentException("Json Validation Error - Create"), request, userInfo);
                                responseBuilder.ReturnRepositoryResponseInvalidJson(errList);
                            }
                            if (service.IsAllowedCallQueryBuilder(request.CreateParam.EntityName, OperationAccessRightsEnum.CreateParam))
                            {
                                var json = service.Add(request.CreateParam);
                                return(responseBuilder.ReturnRepositoryResponseOK(json));
                            }
                            return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                        }
                    }
                    if (request.SaveLayoutParam != null)
                    {
                        if (request.SaveLayoutParam.Layout != null)
                        {
                            var json = service.SaveLayout(request.SaveLayoutParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                    }
                    if (request.GetGridSettingsParam != null)
                    {
                        var json = service.GetGridSettings(request.GetGridSettingsParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.SaveGridSettingsParam != null)
                    {
                        if (this.userInfo.ProfileId == Settings.PROFILE_SYS_ADMIN_ID)
                        {
                            var json = service.SaveGridSettings(request.SaveGridSettingsParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        return(responseBuilder.ReturnRepositoryResponseOK("{}"));
                    }
                    if (request.FullTextSearchParam != null)
                    {
                        var json = service.FullTextSearch(request.FullTextSearchParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.AddSignatureParam != null)
                    {
                        if (!string.IsNullOrWhiteSpace(request.AddSignatureParam.Data))
                        {
                            byte[] bytes = System.Convert.FromBase64String(request.AddSignatureParam.Data.Replace("data:image/png;base64,", ""));
                            Guid   guid  = Guid.NewGuid();
                            using (VistosDbContext ctx = new VistosDbContext())
                            {
                                Signature signature = new Signature();
                                signature.Deleted      = false;
                                signature.CreatedBy_FK = this.userInfo.UserId;
                                signature.Modified     = DateTime.Now;
                                signature.Created      = DateTime.Now;
                                signature.Value        = string.Empty;
                                signature.UniqueGuid   = guid;
                                signature.Bitmap       = bytes;
                                ctx.Signature.Add(signature);
                                ctx.SaveChanges();
                                return(responseBuilder.ReturnRepositoryResponseOK($"\"{guid.ToString()}\"", ""));
                            }
                        }
                    }
                    if (request.GetCalendarDataParam != null)
                    {
                        var json = service.GetCalendarAppointments(request.GetCalendarDataParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.UpdateCalendarDataParam != null)
                    {
                        if (service.IsAllowedCallQueryBuilder(request.UpdateCalendarDataParam.EntityName, OperationAccessRightsEnum.UpdateCalendarDataParam))
                        {
                            var json = service.UpdateCalendarData(request.UpdateCalendarDataParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.CreateEntityFromParam != null)
                    {
                        if (service.IsAllowedCallQueryBuilder(request.CreateEntityFromParam.EntityNameFrom, OperationAccessRightsEnum.CreateEntityFromParam))
                        {
                            var json = service.CreateEntityFrom(request.CreateEntityFromParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.GetFiltersParam != null)
                    {
                        var json = service.GetFilterSettings(request.GetFiltersParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.SaveFiltersParam != null)
                    {
                        var json = service.SaveFilterSettings(request.SaveFiltersParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.MassActionUpdateParam != null)
                    {
                        if (request.MassActionUpdateParam.Data.HasValues)
                        {
                            if (service.IsAllowedCallQueryBuilder(request.MassActionUpdateParam.EntityName, OperationAccessRightsEnum.MassActionUpdateParam))
                            {
                                var json = service.MassUpdate(request.MassActionUpdateParam);
                                return(responseBuilder.ReturnRepositoryResponseOK(json));
                            }
                            return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                        }
                        return(responseBuilder.ReturnRepositoryResponseOK("{}", ""));
                    }
                    if (request.AddExistingManyToManyParam != null)
                    {
                        var json = service.AddManyToMany(request.AddExistingManyToManyParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.GetSpDataParam != null)
                    {
                        try
                        {
                            var json = service.GetSpData(request.GetSpDataParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        catch (Exception ex)
                        {
                            Logger.SaveLogError(LogLevel.ErrorGetSpData, this.ToString(), ex, request, userInfo);
                            return(responseBuilder.ReturnRepositoryResponseWarning("{}", "ERROR_GET_SP_DATA"));
                        }
                    }
                    if (request.GetProjectionAccessRightsParam != null)
                    {
                        if (this.userInfo.ProfileId == 1)
                        {
                            var json = service.GetProjectionAccessRights(request.GetProjectionAccessRightsParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.SaveAccessRightsParam != null)
                    {
                        try
                        {
                            var json = service.SaveProjectionAccessRights(request.SaveAccessRightsParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        catch (Exception ex)
                        {
                            Logger.SaveLogError(LogLevel.Error, this.ToString(), ex, request, userInfo);
                            return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                        }
                    }
                    if (request.ResetLayoutParam != null)
                    {
                        // TODO: proc jsou tady dva parametry (ResetLayoutParam,SaveLayoutParam)?
                        var json = service.ResetLayout(request.ResetLayoutParam, request.SaveLayoutParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.GetAccessRightsColumnByProjectionParam != null)
                    {
                        try
                        {
                            var json = service.GetProjectionAccessRightsColumns(
                                request.GetAccessRightsColumnByProjectionParam
                                );

                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        catch (Exception ex)
                        {
                            Logger.SaveLogError(LogLevel.Error, this.ToString(), ex, request, userInfo);
                            return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                        }
                    }
                    if (request.GetLocalizationParam != null)
                    {
                        try
                        {
                            var json = service.GetLocalization(request.GetLocalizationParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        catch (Exception ex)
                        {
                            Logger.SaveLogError(LogLevel.Error, this.ToString(), ex, request, userInfo);
                            return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                        }
                    }
                    if (request.SaveLocalizationParam != null)
                    {
                        try
                        {
                            var json = service.SaveLocalization(request.SaveLocalizationParam);
                            return(responseBuilder.ReturnRepositoryResponseOK(json));
                        }
                        catch (Exception ex)
                        {
                            Logger.SaveLogError(LogLevel.Error, this.ToString(), ex, request, userInfo);
                            return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                        }
                    }

                    if (request.SaveAccessRightsColumnsParam != null)
                    {
                        var json = service.SaveProjectionAccessRightsColumns(request.SaveAccessRightsColumnsParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.GetDiscussionByEntitParam != null)
                    {
                        var json = service.GetDiscussionByProjection(request.GetDiscussionByEntitParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.SaveDiscussionMessageParam != null)
                    {
                        var json = service.SaveNewDiscussionMessage(request.SaveDiscussionMessageParam, userInfo.UserId);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.EditDiscussionMessageParam != null)
                    {
                        var json = service.EditDiscussionMessage(request.EditDiscussionMessageParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                    if (request.RestartAPIParam != null)
                    {
                        if (this.userInfo.ProfileId == Settings.PROFILE_SYS_ADMIN_ID)
                        {
                            Settings.Restart();
                            return(responseBuilder.ReturnRepositoryResponseOK("", "Restart OK"));
                        }
                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.CleanCacheParam != null)
                    {
                        if (this.userInfo.ProfileId == Settings.PROFILE_SYS_ADMIN_ID)
                        {
                            Settings.Restart();
                            return(responseBuilder.ReturnRepositoryResponseOK("", "Clean cache OK"));
                        }
                        return(responseBuilder.ReturnRepositoryResponseUnauthorized(""));
                    }
                    if (request.CallCustomMethodParam != null)
                    {
                        var json = service.CallCustomMethod(request.CallCustomMethodParam);
                        return(responseBuilder.ReturnRepositoryResponseOK(json));
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.SaveLogError(LogLevel.Error, this.ToString(), ex, request, userInfo);
            }
            return(responseBuilder.ReturnRepositoryResponseError("Api manager Error"));
        }
Beispiel #21
0
        public String SaveNewDiscussionByEntity(string text, int recordId, string projectionName, string hierarchyId)
        {
            var dbObjectId          = Settings.GetInstance.GetVwProjectionList(userInfo.ProfileId).Find(x => x.Projection_Name == projectionName).DbObject_Id;
            var discussionMessageId = 0;

            using (SqlConnection conn = new SqlConnection(DbConnectionString))
            {
                conn.Open();

                using (SqlTransaction trans = conn.BeginTransaction())
                {
                    try
                    {
                        #region 1. Save new discussion message
                        var saveNewDiscussionByEntityCommand = this.GetSaveNewDiscussionByEntityCommand(text, recordId, projectionName, hierarchyId);
                        saveNewDiscussionByEntityCommand.Connection  = conn;
                        saveNewDiscussionByEntityCommand.Transaction = trans;
                        object a = saveNewDiscussionByEntityCommand.ExecuteScalar();
                        discussionMessageId = (int)a;

                        #endregion

                        #region 2. Add information to TrackChanges
                        var trackChanges = new TrackChanges();
                        trackChanges.Created = DateTime.Now;

                        using (VistosDbContext ctx = new VistosDbContext())
                        {
                            trackChanges.RecordId    = recordId;
                            trackChanges.ReferenceId = (int)discussionMessageId;
                            trackChanges.DbObject_FK = dbObjectId;
                            //**trackChanges.Type_FK = (int)BAL.Services.TrackChanges.TrackChangesType.AddDiscusionMessage;
                            trackChanges.NewValue = text;
                            trackChanges.User_FK  = userInfo.UserId;
                            ctx.TrackChanges.Add(trackChanges);
                            ctx.SaveChanges();
                        }
                        #endregion
                        trans.Commit();

                        //**var nws = new GenerateNotificationWorkerSettings(this.userInfo, new List<TrackChanges>() { trackChanges }, DbConnectionString);
                        //**Worker.ExecuteGenerateNotification(nws);
                    }
                    catch (Exception ex)
                    {
                        // TODO: log exception
                        Logger.SaveLogError(LogLevel.Error, ex.Message, ex, null, userInfo);
                        trans.Rollback();
                    }
                    finally
                    {
                        if (conn.State == ConnectionState.Open)
                        {
                            conn.Close();
                        }
                    }
                }
            }



            return("{}");
        }
Beispiel #22
0
        public DocumentExt SaveNewDocumentWithAttachment(string documentName, byte[] byteArray, string type, UserInfo userInfo)
        {
            using (VistosDbContext ctx = new VistosDbContext())
            {
                int enumDocsId = 0;
                if (!string.IsNullOrEmpty(type))
                {
                    int enumDocsTypeId = ctx.EnumerationType.Where(e => !e.Deleted && e.Type == "DocsType").Select(e => e.Id).First();
                    enumDocsId = ctx.Enumeration.Where(e => e.EnumerationType_FK == enumDocsTypeId && e.Description == type && !e.Deleted).Select(e => e.Id).FirstOrDefault();
                }

                bool storeInDropBox = !string.IsNullOrEmpty(SystemSettings.DropBoxSecurityToken);
                bool storeInFtp     = !string.IsNullOrEmpty(SystemSettings.FtpType);

                Document doc     = new Document();
                int      lastDot = documentName.LastIndexOf('.');
                doc.Deleted      = false;
                doc.CreatedBy_FK = userInfo.UserId;
                doc.Modified     = DateTime.Now;
                doc.Created      = DateTime.Now;
                doc.Account_FK   = userInfo.AccountId;
                doc.Contact_FK   = userInfo.ContactId;
                if (enumDocsId > 0)
                {
                    doc.Type_FK = enumDocsId;
                }
                doc.Name = lastDot <= 0 ? documentName : documentName.Substring(0, lastDot);
                ctx.Document.Add(doc);
                ctx.SaveChanges();

                DocumentAttachment da = new DocumentAttachment();
                da.Deleted        = false;
                da.CreatedBy_FK   = userInfo.UserId;
                da.Modified       = DateTime.Now;
                da.Created        = DateTime.Now;
                da.StoreInDropBox = storeInDropBox;
                da.StoreInFtp     = storeInFtp;
                da.DocName        = documentName;
                da.Attachment     = !storeInDropBox && !storeInFtp ? byteArray : null;
                da.DataLength     = byteArray?.LongLength ?? 0;
                da.UploadDate     = DateTime.Now;
                da.Document_FK    = doc.Id;
                da.ContentType    = MimeMapping.MimeUtility.GetMimeMapping(documentName);
                da.Icon           = Icon.GetIconByExtension(System.IO.Path.GetExtension(documentName));

                DocumentExt docExt = new DocumentExt()
                {
                    Id      = doc.Id,
                    Name    = doc.Name,
                    Type_FK = doc.Type_FK,
                    Icon    = da.Icon
                };

                ctx.DocumentAttachment.Add(da);
                ctx.SaveChanges();

                if (storeInFtp)
                {
                    FtpService ftpService = new FtpService(
                        SystemSettings.FtpType
                        , SystemSettings.FtpHost
                        , SystemSettings.FtpPort
                        , SystemSettings.FtpUserName
                        , SystemSettings.FtpPassword
                        , SystemSettings.FtpPrivateKey
                        , SystemSettings.FtpPassPhrase
                        , SystemSettings.FtpRoot
                        );
                    ftpService.UploadDocAttachment(byteArray, da.Id, da.DocName);
                }

                if (storeInDropBox)
                {
                    DropBoxService dropBox = new DropBoxService(SystemSettings.DropBoxSecurityToken);
                    dropBox.UploadDocAttachment(byteArray, da.Id, da.DocName);
                }

                return(docExt);
            }
        }