예제 #1
0
 public LetterDTO GetLetter(DR_Requester requester, int letterID, bool withDetails)
 {
     using (var letterModel = new MyIdeaDataDBEntities())
     {
         using (var projectContext = new MyProjectEntities())
         {
             var dbitem = letterModel.Letter.First(x => x.ID == letterID);
             var letetr = ToLetterDTO(requester, dbitem, withDetails, projectContext);
             //BizLetterTemplate bizLetterTemplate = new BizLetterTemplate();
             if (withDetails)
             {
                 var letterSetting = GetLetterSetting();
                 if (letterSetting != null)
                 {
                     if (letterSetting.BeforeLetterLoadCodeID != 0)
                     {
                         var result = codeFunctionHandler.GetCodeFunctionResult(requester, letterSetting.BeforeLetterLoadCodeID, letetr);
                         if (result.Exception == null)
                         {
                             //if (!string.IsNullOrEmpty(result.Message))
                             //{
                             //}
                         }
                         else
                         {
                         }
                     }
                 }
             }
             return(letetr);
         }
     }
 }
예제 #2
0
        private bool SetPossibleThumbnail(MyIdeaDataDBEntities context, ArchiveItem dbArchiveItem, Enum_ArchiveItemMainType mainType, Enum_ArchiveItemFileType fileType, byte[] fileContent, string fileName)
        {
            byte[] thumbNail = null;
            if (mainType == Enum_ArchiveItemMainType.Image)
            {
                thumbNail = GetJpegThumbnail(mainType, fileType, fileContent);
            }
            else if (mainType == Enum_ArchiveItemMainType.Pdf)
            {
                var pdfToImage = PdfToImage(mainType, fileType, fileContent);
                if (pdfToImage != null)
                {
                    thumbNail = GetJpegThumbnail(Enum_ArchiveItemMainType.Image, Enum_ArchiveItemFileType.BMP, pdfToImage.ToArray());
                }
            }


            if (thumbNail != null)
            {
                FileRepositoryDTO attechedFile = new FileRepositoryDTO();
                attechedFile.Content = thumbNail;
                if (dbArchiveItem.ThumbnailFileRepositoryID != null)
                {
                    attechedFile.ID = dbArchiveItem.ThumbnailFileRepositoryID.Value;
                }
                attechedFile.FileName        = fileName;
                attechedFile.FileExtension   = "jpg";
                dbArchiveItem.FileRepository = bizFileRepository.ToFileRepository(context, attechedFile);
                return(true);
            }

            return(false);
        }
예제 #3
0
 public FileRepositoryDTO GetAttachedFile(int iD)
 {
     using (var context = new MyIdeaDataDBEntities())
     {
         var item = context.ArchiveItem.First(x => x.ID == iD);
         return(bizFileRepository.ToFileRepository(item.FileRepository1));
     }
 }
예제 #4
0
 public DataLogDTO GetDataLog(DR_Requester requester, int iD)
 {
     using (var context = new MyIdeaDataDBEntities())
     {
         var dbLog = context.DataLog.First(x => x.ID == iD);
         return(ToDataLogDTO(requester, dbLog, true));
     }
 }
예제 #5
0
 public List <int> GetArchiveItemTagIds(int iD)
 {
     using (var context = new MyIdeaDataDBEntities())
     {
         var item = context.ArchiveItem.First(x => x.ID == iD);
         return(item.ArchiveItem_Tag.Select(x => x.TagID).ToList());
     }
 }
예제 #6
0
 public ArchiveItemDTO GetArchiveItem(DR_Requester requester, int id)
 {
     using (var context = new MyIdeaDataDBEntities())
     {
         var dbitem = context.ArchiveItem.First(x => x.ID == id);
         var letetr = ToArchiveItemDTO(requester, dbitem, true);
         return(letetr);
     }
 }
예제 #7
0
        public List <DataLogDTO> SearchDataLogs(DR_Requester requester, int entityID, DateTime?fromDate, DateTime?toDate, DP_BaseData dataItem, DataLogType?logType, int columnID, int userID, bool?withMajorException, bool?withMinorException)
        {
            List <DataLogDTO> result = new List <DataLogDTO>();

            using (var context = new MyIdeaDataDBEntities())
            {
                var dataLogs = context.DataLog as IQueryable <DataLog>;
                if (entityID != 0)
                {
                    dataLogs = dataLogs.Where(x => x.MyDataItem.TableDrivedEntityID == entityID);
                }
                if (fromDate != null)
                {
                    dataLogs = dataLogs.Where(x => x.Date >= fromDate);
                }
                if (toDate != null)
                {
                    dataLogs = dataLogs.Where(x => x.Date <= toDate);
                }
                if (logType != null)
                {
                    dataLogs = dataLogs.Where(x => x.MainType == (short)logType);
                }
                if (dataItem != null)
                {
                    int dataItemID = bizDataItem.GetDataItemID(dataItem.TargetEntityID, dataItem.KeyProperties);
                    if (dataItemID == 0)
                    {
                        dataItemID = -1;
                    }
                    dataLogs = dataLogs.Where(x => x.MyDataItemID == dataItemID);
                }
                if (columnID != 0)
                {
                    dataLogs = dataLogs.Where(x => x.EditDataItemColumnDetails.Any(y => y.ColumnID == columnID));
                }
                if (userID != 0)
                {
                    dataLogs = dataLogs.Where(x => x.UserID == userID);
                }
                if (withMajorException != null)
                {
                    dataLogs = dataLogs.Where(x => x.MajorFunctionException == withMajorException);
                }
                if (withMinorException != null)
                {
                    dataLogs = dataLogs.Where(x => x.MinorFunctionException == withMinorException);
                }
                foreach (var item in dataLogs.OrderBy(x => x.ID))
                {
                    result.Add(ToDataLogDTO(requester, item, false));
                }
            }
            return(result);
        }
예제 #8
0
 public bool ConvertLetterToExternal(int letterID, string externalCode)
 {
     using (var letterModel = new MyIdeaDataDBEntities())
     {
         var dbitem = letterModel.Letter.First(x => x.ID == letterID);
         dbitem.ExternalSourceKey = externalCode;
         //dbitem.FromExternalSource = true;
         letterModel.SaveChanges();
     }
     return(true);
 }
 public DP_DataView GetDataItem(DR_Requester requester, int dataItemID, bool lastInfo)
 {
     using (var model = new MyIdeaDataDBEntities())
     {
         var MyDataItem = model.MyDataItem.FirstOrDefault(x => x.ID == dataItemID);
         if (MyDataItem != null)
         {
             return(ToDataViewDTO(requester, MyDataItem, lastInfo));
         }
     }
     return(null);
 }
        private MyDataItem GetDBDataItem(MyIdeaDataDBEntities context, int tableDrivedEntityID, List <EntityInstanceProperty> keyProperties)
        {
            MyDataItem MyDataItem;

            var dataItems = context.MyDataItem.Where(x => x.TableDrivedEntityID == tableDrivedEntityID);

            foreach (var keyColumn in keyProperties)
            {
                dataItems = dataItems.Where(x => x.MyDataItemKeyColumns.Any(y => y.ColumnID == keyColumn.ColumnID && y.Value == keyColumn.Value.ToString()));
            }
            MyDataItem = dataItems.FirstOrDefault();
            return(MyDataItem);
        }
예제 #11
0
        public List <ArchiveItemDTO> GetArchiveItemsAllFolders(DR_Requester requester, List <int> dataitemIDS)
        {
            List <ArchiveItemDTO> result = new List <ArchiveItemDTO>();

            using (var context = new MyIdeaDataDBEntities())
            {
                var archivedItems = context.ArchiveItem.Where(x => dataitemIDS.Contains(x.MyDataItemID));
                foreach (var item in archivedItems)
                {
                    result.Add(ToArchiveItemDTO(requester, item, false));
                }
                return(result);
            }
        }
예제 #12
0
        public List <DataLogDTO> GetDataLogsByPackageID(DR_Requester requester, Guid guid)
        {
            List <DataLogDTO> result = new List <DataLogDTO>();

            using (var context = new MyIdeaDataDBEntities())
            {
                var dataLogs = context.DataLog.Where(x => x.PackageGuid == guid);
                foreach (var item in dataLogs.OrderBy(x => x.ID))
                {
                    result.Add(ToDataLogDTO(requester, item, false));
                }
            }
            return(result);
        }
        //private DR_Requester GetRequester()
        //{
        //    return new DR_Requester();// { SkipSecurity = true };
        //}

        //public DP_DataView ToDataViewDTO(MyDataItem dbDataItem)
        //{
        //    var result = new DP_DataView();
        //    result.DataItemID = dbDataItem.ID;
        //    result.TargetEntityID = dbDataItem.TableDrivedEntityID;
        //    //   List<EntityInstanceProperty> listProperties = new List<EntityInstanceProperty>();
        //    BizColumn bizColumn = new BizColumn();

        //    foreach (var item in dbDataItem.MyDataItemKeyColumns)
        //    {
        //        result.Properties.Add(new EntityInstanceProperty(bizColumn.GetColumn(item.ColumnID, true), item.Value)));
        //    }
        //    //result.SetProperties(listProperties);
        //    return result;
        //}
        //private MyDataItem GetDBDataItem(int ID)
        //{

        //}

        public int GetDataItemID(int tableDrivedEntityID, List <EntityInstanceProperty> keyProperties)
        {
            using (var context = new MyIdeaDataDBEntities())
            {
                var MyDataItem = GetDBDataItem(context, tableDrivedEntityID, keyProperties);
                if (MyDataItem == null)
                {
                    return(0);
                }
                else
                {
                    return(MyDataItem.ID);
                }
            }
        }
예제 #14
0
        public string AddLog(DataLogDTO messages, DR_Requester requester)
        {
            try
            {
                using (var context = new MyIdeaDataDBEntities())
                {
                    AddLogInternal(messages, context, requester);

                    context.SaveChanges();
                    return("");
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
예제 #15
0
        public List <LetterDTO> GetLetters(DR_Requester requester, List <int> dataitemIDS)
        {
            List <LetterDTO> result = new List <LetterDTO>();

            using (var letterModel = new MyIdeaDataDBEntities())
            {
                using (var projectContext = new MyProjectEntities())
                {
                    var list = letterModel.Letter.Where(x => dataitemIDS.Contains(x.MyDataItemID));
                    foreach (var item in list)
                    {
                        result.Add(ToLetterDTO(requester, item, false, projectContext));
                    }
                    return(result);
                }
            }
        }
        //public DataItemDTO GetDataItem(int tableDrivedEntityID, List<EntityInstanceProperty> keyProperties)
        //{
        //    using (var model = new MyIdeaDataDBEntities())
        //    {
        //        var dbDataItem = GetDBDataItem(model, tableDrivedEntityID, keyProperties);
        //        if (dbDataItem != null)
        //            return ToDataItemDTO(dbDataItem);
        //        else return null;
        //    }

        //}

        public int GetOrCreateDataItem(DP_BaseData dataItem)
        {
            using (var model = new MyIdeaDataDBEntities())
            {
                var MyDataItem = GetDBDataItem(model, dataItem.TargetEntityID, dataItem.KeyProperties);
                if (MyDataItem == null)
                {
                    //if(dataItem.DataView!=null)
                    //{
                    //    foreach(var item in dataItem.DataView.Properties)
                    //    {
                    //        info += (info == "" ? "" : ",") + item.Value;
                    //    }
                    //}
                    //else
                    //{
                    //    foreach (var item in dataItem.KeyProperties)
                    //    {
                    //        info += (info == "" ? "" : ",") + item.Value;
                    //    }
                    //}
                    MyDataItem = new MyDataItem();
                    MyDataItem.TableDrivedEntityID = dataItem.TargetEntityID;
                    if (dataItem is DP_DataView)
                    {
                        MyDataItem.Info = (dataItem as DP_DataView).ViewInfo;
                    }
                    else if (dataItem is DP_DataRepository)
                    {
                        MyDataItem.Info = (dataItem as DP_DataRepository).ViewInfo;
                    }

                    foreach (var keyColumn in dataItem.KeyProperties)
                    {
                        MyDataItem.MyDataItemKeyColumns.Add(new MyDataItemKeyColumns()
                        {
                            ColumnID = keyColumn.ColumnID, Value = keyColumn.Value == null ? null : keyColumn.Value.ToString()
                        });
                    }
                    model.MyDataItem.Add(MyDataItem);
                    model.SaveChanges();
                }
                return(MyDataItem.ID);
            }
        }
예제 #17
0
        //private ArchiveItemDataItemDTO ToArchiveItemDataItemDTO(MyDataItem_ArchiveItem item, DataItemDTO messageDataItem)
        //{
        //    ArchiveItemDataItemDTO result = new ArchiveItemDataItemDTO();
        //    result.ArchiveItemID = item.ArchiveItemID;
        //    result.DatItemID = item.MyDataItemID;
        //    result.ID = item.ID;
        //    result.FolderID = item.FolderID;
        //    result.DatItem = messageDataItem;
        //    result.ArchiveItem = ToArchiveItemDTO(item.ArchiveItem, false);
        //    return result;
        //}
        //BizArchive bizArchive = new BizArchive();
        public List <int> GetArchiveItemsTags(List <int> dataitemIDS)
        {
            List <int> result = new List <int>();

            using (var context = new MyIdeaDataDBEntities())
            {
                var        archivedItems = context.ArchiveItem.Where(x => dataitemIDS.Contains(x.MyDataItemID));
                List <int> tagIds        = new List <int>();
                foreach (var item in archivedItems)
                {
                    tagIds.AddRange(item.ArchiveItem_Tag.Select(x => x.TagID));
                }
                foreach (var id in tagIds.Distinct())
                {
                    result.Add(id);
                }
                return(result);
            }
        }
예제 #18
0
        public List <Tuple <int?, int> > GetArchivedItemsFolderIDs(List <int> dataItemIds, List <int> tagIDs)
        {
            List <Tuple <int?, int> > result = new List <Tuple <int?, int> >();

            using (var context = new MyIdeaDataDBEntities())
            {
                var list = context.ArchiveItem.Where(x => dataItemIds.Contains(x.MyDataItemID));
                if (tagIDs.Any())
                {
                    list = list.Where(x => x.ArchiveItem_Tag.Any(y => tagIDs.Contains(y.TagID)));
                }
                var group = list.GroupBy(x => x.FolderID);
                foreach (var item in group)
                {
                    result.Add(new Tuple <int?, int>(item.Key, item.Count()));
                }
            }
            return(result);
        }
예제 #19
0
        //public bool UpdateArhiveItemTags(int iD, List<int> selectedTags)
        //{
        //    using (var context = new MyIdeaDataDBEntities())
        //    {
        //        var item = context.ArchiveItem.First(x => x.ID == iD);
        //        while (item.ArchiveItem_Tag.Any())
        //            context.ArchiveItem_Tag.Remove(item.ArchiveItem_Tag.First());
        //        foreach (var tagid in selectedTags)
        //        {
        //            item.ArchiveItem_Tag.Add(new ArchiveItem_Tag() { TagID = tagid });
        //        }
        //        context.SaveChanges();
        //        return true;
        //    }
        //}

        public bool UpdateArchiveItemFileBinary(DR_Requester requester, int iD, byte[] file)
        {
            using (var context = new MyIdeaDataDBEntities())
            {   //سکوریتی ثبت میتونه اینجا هم چک بشه
                var item = context.ArchiveItem.First(x => x.ID == iD);
                BizTableDrivedEntity bizTableDrivedEntity = new BizTableDrivedEntity();
                if (!bizTableDrivedEntity.DataIsAccessable(requester, item.MyDataItem.TableDrivedEntityID, new List <SecurityAction>()
                {
                    SecurityAction.ArchiveEdit
                }))
                {
                    throw new Exception("عدم دسترسی ثبت آرشیو");
                }
                item.FileRepository1.Content = file;
                SetPossibleThumbnail(context, item, (Enum_ArchiveItemMainType)item.MainType, (Enum_ArchiveItemFileType)item.FileType, item.FileRepository1.Content, item.FileRepository1.FileName);
                context.SaveChanges();
                return(true);
            }
        }
예제 #20
0
 public string AddLogs(List <DataLogDTO> messages, DR_Requester requester)
 {
     try
     {
         using (var context = new MyIdeaDataDBEntities())
         {
             foreach (var item in messages)
             {
                 AddLogInternal(item, context, requester);
             }
             context.SaveChanges();
             return("");
         }
     }
     catch (Exception ex)
     {
         return(ex.Message);
     }
 }
예제 #21
0
        public List <DataLogDTO> SearchDataLogs(DR_Requester requester, int relatedITemID, DataLogType?logType)
        {
            List <DataLogDTO> result = new List <DataLogDTO>();

            using (var context = new MyIdeaDataDBEntities())
            {
                var dataLogs = context.DataLog as IQueryable <DataLog>;
                dataLogs = dataLogs.Where(x => x.RelatedItemID == relatedITemID);
                if (logType != null)
                {
                    dataLogs = dataLogs.Where(x => x.MainType == (short)logType);
                }
                foreach (var item in dataLogs.OrderBy(x => x.ID))
                {
                    result.Add(ToDataLogDTO(requester, item, false));
                }
            }
            return(result);
        }
예제 #22
0
 public bool UpdateMultipleArchiveItemInfo(DR_Requester requester, List <int> IDs, bool changeFolder, int?folderID, bool changeTagIDs, List <int> selectedTagIds)
 {
     using (var context = new MyIdeaDataDBEntities())
     {
         //سکوریتی ثبت میتونه اینجا هم چک بشه
         //BizArchive bizArchive = new BizArchive();
         foreach (var iD in IDs)
         {
             var item = context.ArchiveItem.First(x => x.ID == iD);
             BizTableDrivedEntity bizTableDrivedEntity = new BizTableDrivedEntity();
             if (!bizTableDrivedEntity.DataIsAccessable(requester, item.MyDataItem.TableDrivedEntityID, new List <SecurityAction>()
             {
                 SecurityAction.ArchiveEdit
             }))
             {
                 throw new Exception("عدم دسترسی ثبت آرشیو");
             }
             if (changeFolder)
             {
                 item.FolderID = folderID;
             }
             if (changeTagIDs)
             {
                 //var entityArchiveTags = bizArchive.GetArchiveTags(item.MyDataItem.TableDrivedEntityID, true);
                 //var entityTagIds = entityArchiveTags.Select(x => x.ID).ToList();
                 while (item.ArchiveItem_Tag.Any())
                 {
                     context.ArchiveItem_Tag.Remove(item.ArchiveItem_Tag.First());
                 }
                 foreach (var tagid in selectedTagIds)
                 {
                     item.ArchiveItem_Tag.Add(new ArchiveItem_Tag()
                     {
                         TagID = tagid
                     });
                 }
             }
         }
         context.SaveChanges();
         return(true);
     }
 }
예제 #23
0
        public List <LetterDTO> SearchLetters(DR_Requester dR_Requester, string generalFilter)
        {
            List <LetterDTO> result = new List <LetterDTO>();

            using (var letterModel = new MyIdeaDataDBEntities())
            {
                using (var projectContext = new MyProjectEntities())
                {
                    var listEntity = letterModel.Letter as IQueryable <Letter>;
                    if (generalFilter != "")
                    {
                        listEntity = listEntity.Where(x => x.ID.ToString() == generalFilter || x.Title.Contains(generalFilter) || x.LetterNumber.Contains(generalFilter) || x.ExternalSourceKey == generalFilter);
                    }
                    foreach (var item in listEntity)
                    {
                        result.Add(ToLetterDTO(dR_Requester, item, false, projectContext));
                    }
                }
            }
            return(result);
        }
예제 #24
0
        public FileRepository ToFileRepository(MyIdeaDataDBEntities letterModel, FileRepositoryDTO attechedFile)
        {
            //if (attechedFile.ID != 0)
            //    throw new Exception("file id is not zero");
            FileRepository fileRepository = null;

            if (attechedFile.ID == 0)
            {
                fileRepository = new FileRepository();
            }
            else
            {
                fileRepository = letterModel.FileRepository.First(x => x.ID == attechedFile.ID);
            }
            fileRepository.FileName      = attechedFile.FileName;
            fileRepository.FileExtention = attechedFile.FileExtension.Replace(".", "");
            fileRepository.Content       = attechedFile.Content;
            if (attechedFile.ID == 0)
            {
                letterModel.FileRepository.Add(fileRepository);
            }
            return(fileRepository);
        }
 public bool SetDataItemDTO(DP_BaseData dataItem)
 {
     if (dataItem.DataItemID != 0)
     {
         return(true);
     }
     else
     {
         using (var model = new MyIdeaDataDBEntities())
         {
             var dbDataItem = GetDBDataItem(model, dataItem.TargetEntityID, dataItem.KeyProperties);
             if (dbDataItem != null)
             {
                 dataItem.DataItemID = dbDataItem.ID;
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
     }
 }
        public long GetExternalReportKey(DR_Requester requester, int reportID, int entityID, DP_SearchRepository searchItem)
        {
            BizEntityExternalReport bizEntityExternalReport = new BizEntityExternalReport();
            BizTableDrivedEntity    bizTableDrivedEntity    = new BizTableDrivedEntity();
            SearchRequestManager    searchRequestManager    = new SearchRequestManager();
            var query  = searchRequestManager.GetSelectFromExternal(requester, entityID, searchItem, true);
            var entity = bizTableDrivedEntity.GetSimpleEntity(requester, entityID);

            if (query != null)
            {
                //  var transactionresult = ConnectionManager.ExecuteTransactionalQueryItems(allQueryItems.Where(x => !string.IsNullOrEmpty(x.Query)).ToList());

                //var guid = Guid.NewGuid().ToString();
                var id = 0;
                using (var model = new MyIdeaDataDBEntities())
                {
                    var newItem = new ExternalReportKeys();
                    newItem.DateTime    = DateTime.Now;
                    newItem.RequesterID = requester.Identity;
                    newItem.ReportID    = reportID;
                    model.ExternalReportKeys.Add(newItem);
                    model.SaveChanges();
                    id = newItem.ID;
                }
                if (id != 0)
                {
                    var inserted = bizEntityExternalReport.InsertDataIntoExternalReportTable(requester, reportID, entityID, id, query.Item2);

                    if (inserted)
                    {
                        return(id);
                    }
                }
            }
            return(0);
        }
예제 #27
0
        public ArchiveResult CreateArchiveItems(ArchiveItemDTO message, DR_Requester requester)
        {
            ArchiveResult result = new ArchiveResult();

            try
            {
                // افزوده شدن نامه ها به آرشیو بعدا بررسی شود

                if (message.ID != 0)
                {
                    throw new Exception();
                }
                BizTableDrivedEntity bizTableDrivedEntity = new BizTableDrivedEntity();
                if (!bizTableDrivedEntity.DataIsAccessable(requester, message.DatItem.TargetEntityID, new List <SecurityAction>()
                {
                    SecurityAction.ArchiveEdit
                }))
                {
                    throw new Exception("عدم دسترسی ثبت آرشیو");
                }
                using (var context = new MyIdeaDataDBEntities())
                {
                    var dbArchiveItem = new ArchiveItem();
                    if (message.DatItem.DataItemID == 0)
                    {
                        dbArchiveItem.MyDataItemID = bizDataItem.GetOrCreateDataItem(message.DatItem);
                        message.DatItem.DataItemID = dbArchiveItem.MyDataItemID;
                    }
                    else
                    {
                        dbArchiveItem.MyDataItemID = message.DatItem.DataItemID;
                    }
                    //var dataItem = bizDataItem.GetOrCreateDataItem(message.DatItem);
                    //var archiveItemDataItem = new MyDataItem_ArchiveItem();

                    dbArchiveItem.FolderID     = message.FolderID;
                    dbArchiveItem.CreationDate = DateTime.Now;
                    dbArchiveItem.UserID       = requester.Identity;
                    dbArchiveItem.Name         = message.Name;
                    var type = GetArchiveItemType(message);
                    message.FileType       = type.Item2;
                    message.MainType       = type.Item1;
                    dbArchiveItem.FileType = (short)message.FileType;
                    dbArchiveItem.MainType = (short)message.MainType;
                    if (message.AttechedFile != null && message.AttechedFile.Content != null)
                    {
                        dbArchiveItem.FileSize        = message.AttechedFile.Content.Count();
                        dbArchiveItem.FileRepository1 = bizFileRepository.ToFileRepository(context, message.AttechedFile);
                    }
                    SetPossibleThumbnail(context, dbArchiveItem, message.MainType, message.FileType, message.AttechedFile.Content, message.AttechedFile.FileName);
                    //if (!hasThumbnail)
                    //{
                    //    dbArchiveItem.ThumbnailFileRepositoryID = null;
                    //    //    dbArchiveItem.FileRepository1 = null;
                    //}
                    foreach (var tagid in message.TagIDs)
                    {
                        dbArchiveItem.ArchiveItem_Tag.Add(new ArchiveItem_Tag()
                        {
                            TagID = tagid
                        });
                    }
                    context.ArchiveItem.Add(dbArchiveItem);
                    context.SaveChanges();
                    message.ID = dbArchiveItem.ID;

                    result.Result = true;


                    //انتیتی فرمورک قاطی داره رابطه فایل را برای تامبنیل هم میزاره

                    //context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                result.Result  = false;
                result.Message = ex.Message;
            }
            finally
            {
                var logResult = bizLogManager.AddLog(GetCreateItemDataLog(message, result.Message), requester);
                if (!string.IsNullOrEmpty(logResult))
                {
                    result.Message += (!string.IsNullOrEmpty(result.Message) ? Environment.NewLine : "") + "خطا در ثبت لاگ" + " , " + logResult;
                }
            }
            return(result);
        }
예제 #28
0
        private void AddLogInternal(DataLogDTO message, MyIdeaDataDBEntities context, DR_Requester requester)
        {
            var dbLog = new DataLog();

            if (message.DatItem.DataItemID == 0)
            {
                dbLog.MyDataItemID = bizDataItem.GetOrCreateDataItem(message.DatItem);
            }
            else
            {
                dbLog.MyDataItemID = message.DatItem.DataItemID;
            }

            // dbLog.DataInfo = message.DatItem.ViewInfo;
            dbLog.Date     = DateTime.Now;
            dbLog.Time     = DateTime.Now.ToString("HH:mm:ss");
            dbLog.Duration = message.Duration;
            dbLog.MajorFunctionException        = message.MajorException;
            dbLog.MinorFunctionException        = message.MinorException;
            dbLog.MajorFunctionExceptionMessage = message.MajorFunctionExceptionMessage;
            dbLog.LocationInfo  = message.LocationInfo;
            dbLog.RelatedItemID = message.RelatedItemID;
            dbLog.PackageGuid   = message.PackageGuid;
            dbLog.MainType      = (short)message.MainType;
            dbLog.UserID        = requester.Identity;
            if (message.EditDataItemExceptionLog != null)
            {
                dbLog.EditDataItemExceptionLog = new EditDataItemExceptionLog();
                dbLog.EditDataItemExceptionLog.AfterSaveActionExceptionMessage = message.EditDataItemExceptionLog.AfterSaveActionExceptionMessage;
                //dbLog.EditDataItemExceptionLog.BeforeSaveActionExceptionMessage = message.EditDataItemExceptionLog.BeforeSaveActionExceptionMessage;
                //dbLog.EditDataItemExceptionLog.DataUpdateExceptionMessage = message.EditDataItemExceptionLog.DataUpdateExceptionMessage;
                //dbLog.EditDataItemExceptionLog.FormulaUsageExceptionMessage = message.EditDataItemExceptionLog.ForumulaUsageExceptionMessage;
                dbLog.EditDataItemExceptionLog.DataUpdateQuery = message.EditDataItemExceptionLog.DataUpdateQuery;
            }
            if (message.EditDataItemColumnDetails != null)
            {
                foreach (var messageCol in message.EditDataItemColumnDetails)
                {
                    EditDataItemColumnDetails dbCol = new EditDataItemColumnDetails();
                    dbCol.ColumnID         = messageCol.ColumnID;
                    dbCol.Info             = messageCol.Info;
                    dbCol.NewValue         = messageCol.NewValue == null ? "<Null>" : messageCol.NewValue.ToString();
                    dbCol.OldValue         = messageCol.OldValue == null ? "<Null>" : messageCol.OldValue.ToString();
                    dbCol.FormulaException = messageCol.FormulaException;
                    dbCol.FormulaID        = messageCol.FormulaID;
                    dbLog.EditDataItemColumnDetails.Add(dbCol);
                    foreach (var formulaParam in messageCol.FormulaUsageParemeters)
                    {
                        FormulaUsageParemeters paramDB = new FormulaUsageParemeters();
                        paramDB.ID                        = formulaParam.ID;
                        paramDB.ParameterName             = formulaParam.ParameterName;
                        paramDB.ParameterValue            = formulaParam.ParameterValue;
                        paramDB.RelationshipKeyColumnTail = formulaParam.RelationshipPropertyTail;
                        dbCol.FormulaUsageParemeters.Add(paramDB);
                    }
                }
            }
            //if (message.ArchiveItemLog != null)
            //{
            //    dbLog.ArchiveItemLog = new ArchiveItemLog();
            //    dbLog.ArchiveItemLog.Exception = message.ArchiveItemLog.Exception;
            //}
            context.DataLog.Add(dbLog);
        }
예제 #29
0
        public LetterDeleteResult DeleteLetter(DR_Requester requester, int letterID)
        {
            LetterDeleteResult result    = new LetterDeleteResult();
            string             exception = "";

            using (var context = new MyIdeaDataDBEntities())
            {
                //سکوریتی ثبت میتونه اینجا هم چک بشه
                //itemResult.ID = item.ID;
                var dbItem = context.Letter.First(x => x.ID == letterID);
                BizTableDrivedEntity bizTableDrivedEntity = new BizTableDrivedEntity();
                if (!bizTableDrivedEntity.DataIsAccessable(requester, dbItem.MyDataItem.TableDrivedEntityID, new List <SecurityAction>()
                {
                    SecurityAction.LetterEdit
                }))
                {
                    throw new Exception("عدم دسترسی ثبت نامه");
                }
                try
                {
                    if (dbItem.Letter1.Any())
                    {
                        foreach (var item in dbItem.Letter1)
                        {
                            ResultDetail relatedItemException = new ResultDetail();
                            relatedItemException.Title       = "دارای نامه مرتبط";
                            relatedItemException.Description = "نامه به شماره" + " " + item.LetterNumber + " " + "به تاریخ" + " " + item.LetterDate;
                            result.Details.Add(relatedItemException);
                        }
                        result.Message = "به علت وجود نامه های مرتبط عملیات حذف امکان پذیر نمی باشد";
                        return(result);
                    }
                    context.Letter.Remove(dbItem);

                    context.SaveChanges();
                    result.Result  = true;
                    result.Message = "عملیات حذف با موفقیت انجام شد";
                }
                catch (Exception ex)
                {
                    exception = ex.Message;
                    ResultDetail itemResult = new ResultDetail();
                    itemResult.Title                = "خطا";
                    itemResult.Description          = "حذف نامه با شناسه" + " " + letterID + " " + "با خطا همراه بود";
                    itemResult.TechnicalDescription = ex.Message;
                    result.Details.Add(itemResult);
                    result.Message = "عملیات حذف با خطا همراه بود";
                }
                finally
                {
                    var logResult = bizLogManager.AddLog(GetDeleteItemDataLog(dbItem, exception), requester);
                    if (!string.IsNullOrEmpty(logResult))
                    {
                        ResultDetail logException = new ResultDetail();
                        logException.Title                = "خطای ثبت لاگ";
                        logException.Description          = "ثبت لاگ برای حذف فایل با شناسه" + " " + dbItem.ID + " " + "با خطا همراه بود";
                        logException.TechnicalDescription = logResult;
                        result.Details.Add(logException);
                    }
                }
            }
            return(result);
        }
예제 #30
0
        public LetterResult UpdateLetter(LetterDTO message, DR_Requester requester)
        {
            BizTableDrivedEntity bizTableDrivedEntity = new BizTableDrivedEntity();

            if (!bizTableDrivedEntity.DataIsAccessable(requester, message.DataItem.TargetEntityID, new List <SecurityAction>()
            {
                SecurityAction.LetterEdit
            }))
            {
                throw new Exception("عدم دسترسی ثبت نامه");
            }
            LetterResult result        = new LetterResult();
            bool         isNew         = message.ID == 0;
            var          letterSetting = GetLetterSetting();

            if (letterSetting != null)
            {
                if (letterSetting.BeforeLetterSaveCodeID != 0)
                {
                    var resultFunction = codeFunctionHandler.GetCodeFunctionResult(requester, letterSetting.BeforeLetterSaveCodeID, message);
                    if (resultFunction.Exception != null)
                    {
                        var logResult = bizLogManager.AddLog(GetBeforeUpdateExceptionLog(message, resultFunction.Exception, isNew ? DataLogType.LetterInsert : DataLogType.LetterUpdate), requester);
                        if (!string.IsNullOrEmpty(logResult))
                        {
                            ResultDetail logException = new ResultDetail();
                            logException.Title                = "خطای ثبت لاگ";
                            logException.Description          = "خطای لاگ برای اقدام قبل از ثبت نامه";
                            logException.TechnicalDescription = logResult;
                            result.Details.Add(logException);
                        }
                        result.Message = "اقدامات مرتبط قبل از ثبت نامه با خطا همراه بود";
                        return(result);
                    }
                }
            }
            using (var letterModel = new MyIdeaDataDBEntities())
            {
                try
                {
                    var dbLetter = letterModel.Letter.FirstOrDefault(x => x.ID == message.ID);
                    if (dbLetter == null)
                    {
                        dbLetter = new Letter();
                        dbLetter.CreationDate = DateTime.Now;
                        dbLetter.UserID       = requester.Identity;
                        //var dataItemID = bizDataItem.GetOrCreateDataItem(message.DataItem);
                        if (message.DataItem.DataItemID == 0)
                        {
                            dbLetter.MyDataItemID       = bizDataItem.GetOrCreateDataItem(message.DataItem);
                            message.DataItem.DataItemID = dbLetter.MyDataItemID;
                        }
                        else
                        {
                            dbLetter.MyDataItemID = message.DataItem.DataItemID;
                        }
                    }
                    dbLetter.ID                    = message.ID;
                    dbLetter.Desc                  = message.Desc;
                    dbLetter.LetterNumber          = message.LetterNumber;
                    dbLetter.IsGeneratedOrSelected = message.IsGeneratedOrSelected;
                    dbLetter.FromExternalSource    = message.IsExternalOrInternal;
                    dbLetter.ExternalSourceKey     = message.ExternalCode;
                    dbLetter.LetterNumber          = message.LetterNumber;
                    dbLetter.LetterDate            = message.LetterDate;
                    dbLetter.LetterTemplateID      = message.LetterTemplateID == 0 ? (int?)null : message.LetterTemplateID;
                    dbLetter.LetterTypeID          = message.LetterTypeID;
                    dbLetter.RelatedLetterID       = message.RelatedLetterID == 0 ? (int?)null : message.RelatedLetterID;
                    dbLetter.Title                 = message.Title;

                    if (dbLetter.FileRepository == null)
                    {
                        if (message.AttechedFile != null && message.AttechedFile.Content != null)
                        {
                            dbLetter.FileRepository = bizFileRepository.ToFileRepository(letterModel, message.AttechedFile);
                        }
                    }

                    if (dbLetter.ID == 0)
                    {
                        letterModel.Letter.Add(dbLetter);
                    }
                    letterModel.SaveChanges();
                    message.ID     = dbLetter.ID;
                    result.SavedID = dbLetter.ID;
                    result.Result  = true;
                }
                catch (Exception ex)
                {
                    result.Result  = false;
                    result.Message = ex.Message;
                }
                finally
                {
                    var logResult = bizLogManager.AddLog(GetUpdateLetterDataLog(message, result.Message, isNew ? DataLogType.LetterInsert : DataLogType.LetterUpdate), requester);
                    if (!string.IsNullOrEmpty(logResult))
                    {
                        ResultDetail logException = new ResultDetail();
                        logException.Title                = "خطای ثبت لاگ";
                        logException.Description          = "خطای لاگ برای ثبت نامه";
                        logException.TechnicalDescription = logResult;
                        result.Details.Add(logException);
                    }
                }
            }
            if (result.Result == false)
            {
                result.Message = "عملیات ثبت با خطا همراه بود";
                return(result);
            }
            else
            {
                bool afterSaveException = false;
                if (letterSetting != null)
                {
                    if (letterSetting.AfterLetterSaveCodeID != 0)
                    {
                        var resultFunction = codeFunctionHandler.GetCodeFunctionResult(requester, letterSetting.AfterLetterSaveCodeID, message);
                        if (resultFunction.Exception != null)
                        {
                            afterSaveException = true;
                            var logResult = bizLogManager.AddLog(GetAfterUpdateExceptionLog(message, resultFunction.Exception, isNew ? DataLogType.LetterInsert : DataLogType.LetterUpdate), requester);
                            if (!string.IsNullOrEmpty(logResult))
                            {
                                ResultDetail logException = new ResultDetail();
                                logException.Title                = "خطای ثبت لاگ";
                                logException.Description          = "خطای لاگ برای اقدام بعد از ثبت نامه";
                                logException.TechnicalDescription = logResult;
                                result.Details.Add(logException);
                            }
                            return(result);
                        }
                    }
                }
                if (afterSaveException)
                {
                    result.Message = "عملیات ثبت با موفقیت انجام شد اما اقدامات بعد از ثبت با خطا همراه بود";
                }
                else
                {
                    result.Message = "عملیات ثبت با موفقیت انجام شد";
                }

                return(result);
            }
        }