public bool DataIsAccessable(DR_Requester requester, DataLinkDefinition dataLink) { if (requester.SkipSecurity) { return(true); } if (!bizTableDrivedEntity.DataIsAccessable(requester, dataLink.TableDrivedEntity)) { return(false); } if (!bizEntityReport.DataIsAccessable(requester, dataLink.EntityDataItemReport.EntityReport)) { return(false); } //اینجا تیل چک نمیشه foreach (var tail in dataLink.DataLinkDefinition_EntityRelationshipTail) { if (!bizEntityRelationshipTail.DataIsAccessable(requester, tail.EntityRelationshipTail)) { return(false); } } return(true); }
private DataLinkDTO ToDataLinkDTO(DataLinkDefinition item, bool withDetails) { DataLinkDTO result = new DataLinkDTO(); bizEntityReport.ToEntityReportDTO(item.EntityDataItemReport.EntityReport, result, withDetails); result.SecondSideEntityID = item.SecondSideEntityID; result.NotJointEntities = item.NotJointEntities == true; result.FirstSideDataMenuID = item.FirstSideDataMenuID ?? 0; result.SecondSideDataMenuID = item.SecondSideDataMenuID ?? 0; if (withDetails) { BizEntityRelationshipTail bizEntityRelationshipTail = new MyModelManager.BizEntityRelationshipTail(); BizEntityRelationshipTailDataMenu bizEntityRelationshipTailListView = new MyModelManager.BizEntityRelationshipTailDataMenu(); foreach (var dbRel in item.DataLinkDefinition_EntityRelationshipTail) { var rel = new DataLinkRelationshipTailDTO(); rel.RelationshipTailID = dbRel.EntityRelationshipTailID; rel.EntityRelationshipTailDataMenuID = dbRel.EntityRelationshipTailDataMenuID ?? 0; if (rel.EntityRelationshipTailDataMenuID != 0) { rel.EntityRelationshipTailDataMenu = bizEntityRelationshipTailListView.ToEntityRelationshipTailDataMenuDTO(dbRel.EntityRelationshipTailDataMenu, true); } // rel.FromFirstSideToSecondSide = dbRel.FromFirstSideToSecondSide; rel.ID = dbRel.ID; rel.RelationshipTail = bizEntityRelationshipTail.ToEntityRelationshipTailDTO(dbRel.EntityRelationshipTail); result.RelationshipsTails.Add(rel); } } return(result); }
public int UpdateDataLink(DataLinkDTO message) { using (var projectContext = new DataAccess.MyProjectEntities()) { BizEntityDataItemReport bizEntityDataItemReport = new BizEntityDataItemReport(); var dbEntity = projectContext.DataLinkDefinition.FirstOrDefault(x => x.ID == message.ID); if (dbEntity == null) { message.ReportType = ReportType.DataItemReport; dbEntity = new DataLinkDefinition(); dbEntity.EntityDataItemReport = bizEntityDataItemReport.ToNewEntityDataItemReport(message); dbEntity.EntityDataItemReport.DataItemReportType = (short)DataItemReportType.DataLinkReport; } else { bizEntityDataItemReport.ToUpdateEntityDataItemReport(dbEntity.EntityDataItemReport, message); } dbEntity.SecondSideEntityID = message.SecondSideEntityID; dbEntity.NotJointEntities = message.NotJointEntities; if (message.FirstSideDataMenuID != 0) { dbEntity.FirstSideDataMenuID = message.FirstSideDataMenuID; } else { dbEntity.FirstSideDataMenuID = null; } if (message.SecondSideDataMenuID != 0) { dbEntity.SecondSideDataMenuID = message.SecondSideDataMenuID; } else { dbEntity.SecondSideDataMenuID = null; } while (dbEntity.DataLinkDefinition_EntityRelationshipTail.Any()) { projectContext.DataLinkDefinition_EntityRelationshipTail.Remove(dbEntity.DataLinkDefinition_EntityRelationshipTail.First()); } foreach (var item in message.RelationshipsTails) { var dbRel = new DataLinkDefinition_EntityRelationshipTail(); dbRel.EntityRelationshipTailID = item.RelationshipTailID; if (item.EntityRelationshipTailDataMenuID != 0) { dbRel.EntityRelationshipTailDataMenuID = item.EntityRelationshipTailDataMenuID; } // dbRel.FromFirstSideToSecondSide = item.FromFirstSideToSecondSide; dbEntity.DataLinkDefinition_EntityRelationshipTail.Add(dbRel); } if (dbEntity.ID == 0) { projectContext.DataLinkDefinition.Add(dbEntity); } try { projectContext.SaveChanges(); } catch (DbUpdateException e) { throw e; } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } catch (Exception ex) { //result.Result = Enum_DR_ResultType.ExceptionThrown; //result.Message = "خطا در ثبت" + Environment.NewLine + ex.Message; } return(dbEntity.ID); } }