예제 #1
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);
 }
예제 #2
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);
            }
        }
        //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);
            }
        }
예제 #4
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);
     }
 }
예제 #5
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);
            }
        }
예제 #6
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);
     }
 }
        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);
        }
예제 #8
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);
        }
예제 #9
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);
            }
        }
예제 #10
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);
        }
예제 #11
0
        public ArchiveDeleteResult DeleteArchiveItemDataItems(List <int> items, DR_Requester requester)
        {
            ArchiveDeleteResult result = new ArchiveDeleteResult();

            using (var context = new MyIdeaDataDBEntities())
            {
                bool saved       = false;
                bool exceptioned = false;
                foreach (var item in items)
                {
                    string exception = "";
                    //itemResult.ID = item.ID;
                    var dbItem = context.ArchiveItem.First(x => x.ID == item);

                    try
                    {
                        BizTableDrivedEntity bizTableDrivedEntity = new BizTableDrivedEntity();
                        if (!bizTableDrivedEntity.DataIsAccessable(requester, dbItem.MyDataItem.TableDrivedEntityID, new List <SecurityAction>()
                        {
                            SecurityAction.ArchiveEdit
                        }))
                        {
                            throw new Exception("عدم دسترسی ثبت نامه");
                        }
                        while (dbItem.ArchiveItem_Tag.Any())
                        {
                            context.ArchiveItem_Tag.Remove(dbItem.ArchiveItem_Tag.First());
                        }
                        context.ArchiveItem.Remove(dbItem);
                        //سکوریتی حذف میتونه اینجا هم چک بشه
                        context.SaveChanges();
                        saved = true;
                        //itemResult.Result = true;
                    }
                    catch (Exception ex)
                    {
                        exception = ex.Message;
                        ResultDetail itemResult = new ResultDetail();
                        exceptioned                     = true;
                        itemResult.Title                = "خطا";
                        itemResult.Description          = "حذف فایل با شناسه" + " " + dbItem.ID + " " + "با خطا همراه بود";
                        itemResult.TechnicalDescription = ex.Message;
                        result.Details.Add(itemResult);
                    }
                    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);
                        }
                    }
                }
                if (saved && exceptioned)
                {
                    result.Message = "حذف برخی از فایلها با خطا همراه بود";
                }
                else if (saved)
                {
                    result.Message = "عملیات حذف با موفقیت انجام شد";
                }
                else if (exceptioned)
                {
                    result.Message = "عملیات حذف با خطا همراه بود";
                }
                else
                {
                    result.Message = "عملیات حذف انجام نشد";
                }
            }
            return(result);
        }