private List <AspectEntity> FormatAspects(IEnumerable <dynamic> aspects) { var aspectsList = new List <AspectEntity>(); foreach (var item in aspects) { AspectEntity entity = aspectsList.FirstOrDefault(x => x.AspectId == item.AspectId); if (entity == null) { entity = new AspectEntity(); entity.DomainId = item.DomainId; entity.Text = item.Text; entity.Title = item.Title; entity.Framework = item.Framework; entity.Examples = item.Examples; entity.FurtherEducation = item.FurtherEducation; entity.Levels = item.Levels; entity.OnlineResources = item.OnlineResources; entity.PeopleContact = item.PeopleContact; entity.AspectId = item.AspectId; entity.DomainName = item.DomainName; entity.ActionsList = new List <ActionEntity>(); entity.Position = item.Position; aspectsList.Add(entity); } if (item.ActionId == null) { continue; } var action = new ActionEntity { Text = item.ActionText, Title = item.ActionTitle, ActionId = item.ActionId, Type = item.Type, LevelAction = item.LevelAction, AspectId = item.AspectId }; entity.ActionsList.Add(action); } return(aspectsList); }
public Result Update(AspectEntity entity) { var con = new DapperConnectionManager(); var query = new QueryEntity(); var result = new Result(); using (var scope = new TransactionScope()) { query.Entity = entity; query.Query = @"Update Aspects set Title=@Title, Text=@Text, Examples=@Examples, OnlineResources=@OnlineResources, FurtherEducation =@FurtherEducation, PeopleContact = @PeopleContact, Levels = @Levels, Position = @Position where AspectId = @AspectId"; result = con.ExecuteQueryUnScoped(query); if (!result.Success) { result.Message = "An error occurred"; return(result); } var aspectId = entity.AspectId; var listActionsToRemove = entity.ActionsList.Where(x => x.Removed); var listActionsToCreate = entity.ActionsList.Where(x => x.Created); var listActionsToCopy = entity.ActionsList.Where(x => x.Added).ToList(); foreach (var item in listActionsToRemove) { var queryActionCreate = new QueryEntity { Query = @"DELETE from AspectsActions where ActionId = @ActionId", Entity = item }; var resultAction = con.ExecuteQuery(queryActionCreate); if (resultAction.Success) { continue; } result.Message = "An error occurred"; return(result); } foreach (var item in listActionsToCreate) { var queryActionCreate = new QueryEntity { Query = @"INSERT into Actions (Text, Title, Type) VALUES(@Text, @Title, @Type)", Entity = item }; var resultAction = con.InsertQueryUnScoped(queryActionCreate); item.ActionId = (int)resultAction.Entity; listActionsToCopy.Add(item); } foreach (var item in listActionsToCopy) { item.AspectId = aspectId; var queryActionCreate = new QueryEntity { Query = @"INSERT into AspectsActions (AspectId, ActionId, LevelAction, Position) VALUES( @AspectId, @ActionId, @LevelAction, @Position)", Entity = item }; var resultAction = con.ExecuteQueryUnScoped(queryActionCreate); if (resultAction.Success) { continue; } result.Message = "An error occurred"; return(result); } scope.Complete(); result.Entity = aspectId; result.Message = "The aspect has been created"; } return(result); }
public Result Insert(AspectEntity entity) { var con = new DapperConnectionManager(); var query = new QueryEntity(); var result = new Result(); using (var scope = new TransactionScope()) { var linkEntity = new LinkEntity { Href = " ", Name = entity.Title, Type = LinksTypes.ASPECT.ToString(), Active = false }; query.Entity = linkEntity; query.Query = @"INSERT INTO Links (Name, Type, Href, Active) VALUES(@Name, @Type, @Href, @Active)"; result = con.InsertQueryUnScoped(query); if (!result.Success) { result.Message = "An error occurred"; return(result); } var linkId = (int)result.Entity; entity.LinkId = linkId; query.Entity = entity; query.Query = @"INSERT INTO Aspects (DomainId, LinkId, Title, Text, Examples, OnlineResources, FurtherEducation, PeopleContact, Levels) VALUES(@DomainId, @LinkId, @Title, @Text,@Examples, @OnlineResources, @FurtherEducation, @PeopleContact, @Levels )"; result = con.InsertQueryUnScoped(query); if (!result.Success) { result.Message = "An error occurred"; return(result); } var aspectId = (int)result.Entity; var listActionsToCreate = entity.ActionsList.Where(x => x.Created); var listActionsToCopy = entity.ActionsList.Where(x => !x.Created).ToList(); foreach (var item in listActionsToCreate) { var queryActionCreate = new QueryEntity { Query = @"INSERT into Actions (Text, Title, Type) VALUES(@Text, @Title, @Type)", Entity = item }; var resultAction = con.InsertQueryUnScoped(queryActionCreate); if (!resultAction.Success) { result.Message = "An error occurred"; return(result); } item.ActionId = (int)resultAction.Entity; listActionsToCopy.Add(item); } foreach (var item in listActionsToCopy) { item.AspectId = aspectId; var queryActionCreate = new QueryEntity { Query = @"INSERT into AspectsActions (AspectId, ActionId, LevelAction, Position) VALUES( @AspectId, @ActionId, @LevelAction, @Position)", Entity = item }; var resultAction = con.ExecuteQueryUnScoped(queryActionCreate); if (!resultAction.Success) { result.Message = "An error occurred"; result.Success = false; return(result); } } //update link with href var queryUpdateLink = new QueryEntity() { Entity = new { Href = string.Concat("/aspects/", aspectId), LinkId = linkId }, Query = "UPDATE Links set Href = @Href where LinkId = @LinkId" }; var resultUpdateLink = con.ExecuteQueryUnScoped(queryUpdateLink); if (!resultUpdateLink.Success) { result.Message = "An error occurred"; result.Success = false; return(result); } scope.Complete(); result.Entity = aspectId; result.Message = "The aspect has been created"; } return(result); }