hi
i have 3 models Role - Controller - Permission
public class Role
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int RoleID { get; set; }
public string NameAR { get; set; }
public string NameTR { get; set; }
public string NameEN { get; set; }
[DefaultValue(false)]
public bool IsDelete { get; set; }
public virtual ICollection<Permission> PermissionList { get; set; }
public virtual ICollection<User> UserList { get; set; }
}
public class Controller
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ControllerID { get; set; }
public string Name { get; set; }
public string NameAR { get; set; }
public string NameTR { get; set; }
public string NameEN { get; set; }
public string Url { get; set; }
public string ViewUrl { get; set; }
public string ControllerName { get; set; }
[DefaultValue(false)]
public bool IsDelete { get; set; }
public virtual ICollection<Permission> PermissionList { get; set; }
}
public class Permission
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PermissionID { get; set; }
public int ControllerID { get; set; }
public int RoleID { get; set; }
[DefaultValue(false)]
public bool IsDelete { get; set; }
public virtual Controller Controller { get; set; }
public virtual Role Role { get; set; }
}
and i have 3 webApi for each model like this
public class RoleController : BaseApiController
{
RoleBLL roleBLL;
public IEnumerable<Role> Get()
{
using (roleBLL = new RoleBLL())
{
return roleBLL.GetAll(null);
}
}
}
i'm use angular js for get data by useing webapi
like this
Role Service
(function () {
app.factory('RoleService', ['DataRepository', RoleService])
function RoleService(DataRepository) {
return {
url: '/API/Role',
GetAll: function () {
return DataRepository.call(this.url).query();
},
GetListByID: function (id) {
return DataRepository.call(this.url).query({ id: id });
},
Add: function (entity) {
return DataRepository.call(this.url).saveData(entity);
},
Edit: function (entity) {
return DataRepository.call(this.url).update(entity);
},
Delete: function (id) {
return DataRepository.call(this.url).delete({ id: id });
},
GetByID: function (id) {
return DataRepository.call(this.url).getByID({ id: id });
}
}
}
}());
role controller
(function () {
app.controller('RoleController', ['$scope', 'RoleService', SecurityController]);
function RoleController($scope, RoleService) {
$scope.LoadRoles = function () {
RoleService.GetAll().$promise.then(function (response) {
$scope.Roles = response;
}, function () {
});
}
$scope.LoadRoles();
}
}());
this view
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th>Turkish Name</th>
<th>Arabic Name</th>
<th>English Name</th>
<th>Permissions</th>
<td></td>
</tr>
</thead>
<tbody>
<tr data-ng-repeat="Role in Roles" id="Role_{{Role.RoleID}}">
<td>{{Role.NameTR}}</td>
<td>{{Role.NameAR}}</td>
<td>{{Role.NameEN}}</td>
<td>
<span data-ng-repeat="Permission in Role.PermissionList">
<label>{{Permission.Controller.NameEN}}</label>
</span>
</td>
<td class="controlIcon">
<li class="fa fa-edit fa-2x" data-ng-click="ShowEditRole()"></li>
<li class="fa fa-plus-circle fa-2x" data-ng-click="ShowAddRole()"></li>
<li class="fa fa-remove fa-2x" data-ng-click="ShowDeleteRole()"></li>
</td>
</tr>
</tbody>
</table>
</div>
i have two problems
1- data does not appear complete
like this
check this image
http://www.gulfup.com/?pqJlRW[
^]
response data from webapi
[{"$id":"1","PermissionList":[{"$id":"2","Controller":{"$id":"3","PermissionList":[{"$ref":"2"},{"$id":"4","Controller":{"$ref":"3"},"Role":{"$id":"5","PermissionList":[{"$ref":"4"},{"$id":"6","Controller":{"$id":"7","PermissionList":[{"$id":"8","Controller":{"$ref":"7"},"Role":{"$ref":"1"},"PermissionID":2,"ControllerID":2,"RoleID":1,"IsDelete":false},{"$ref":"6"},{"$id":"9","Controller":{"$ref":"7"},"Role":{"$id":"10","PermissionList":[{"$id":"11","Controller":{"$ref":"3"},"Role":{"$ref":"10"},"PermissionID":10,"ControllerID":1,"RoleID":3,"IsDelete":false},{"$ref":"9"},{"$id":"12","Controller":{"$id":"13","PermissionList":[{"$id":"14","Controller":{"$ref":"13"},"Role":{"$ref":"1"},"PermissionID":3,"ControllerID":3,"RoleID":1,"IsDelete":false},{"$id":"15","Controller":{"$ref":"13"},"Role":{"$ref":"5"},"PermissionID":8,"ControllerID":3,"RoleID":2,"IsDelete":false},{"$ref":"12"},{"$id":"16","Controller":{"$ref":"13"},"Role":{"$id":"17","PermissionList":[{"$id":"18","Controller":{"$ref":"3"},"Role":{"$ref":"17"},"PermissionID":23,"ControllerID":1,"RoleID":4,"IsDelete":false},{"$id":"19","Controller":{"$ref":"7"},"Role":{"$ref":"17"},"PermissionID":19,"ControllerID":2,"RoleID":4,"IsDelete":false},{"$ref":"16"},{"$id":"20","Controller":{"$id":"21","PermissionList":[{"$id":"22","Controller":{"$ref":"21"},"Role":{"$ref":"5"},"PermissionID":9,"ControllerID":6,"RoleID":2,"IsDelete":false},{"$ref":"20"}],"ControllerID":6,"Name":"myorders","NameAR":"طلباتي","NameTR":"Benim Istekleri","NameEN":"MyOrders","Url":"/myorders","ViewUrl":"Admin/Order/MyOrders","ControllerName":"MyOrderController","IsDelete":false},"Role":{"$ref":"17"},"PermissionID":20,"ControllerID":6,"RoleID":4,"IsDelete":false},{"$id":"23","Controller":{"$id":"24","PermissionList":[{"$id":"25","Controller":{"$ref":"24"},"Role":{"$ref":"10"},"PermissionID":13,"ControllerID":7,"RoleID":3,"IsDelete":false},{"$ref":"23"}],"ControllerID":7,"Name":"categories","NameAR":"الفئات","NameTR":"Kategoriler","NameEN":"Categories","Url":"/categories","ViewUrl":"Admin/Category/Categories","ControllerName":"CategoryController","IsDelete":false},"Role":{"$ref":"17"},"PermissionID":21,"ControllerID":7,"RoleID":4,"IsDelete":false}],"UserList":[],"RoleID":4,"NameAR":"sdsd","NameTR":"sd","NameEN":"sdsd","IsDelete":false},"PermissionID":22,"ControllerID":3,"RoleID":4,"IsDelete":false}],"ControllerID":3,"Name":"menu","NameAR":"القائمة","NameTR":"Menülerimiz","NameEN":"Menu","Url":"/menu","ViewUrl":"Client/Home/Menu","ControllerName":"MenuController","IsDelete":false},"Role":{"$ref":"10"},"PermissionID":12,"ControllerID":3,"RoleID":3,"IsDelete":false},{"$ref":"25"},{"$id":"26","Controller":{"$id":"27","PermissionList":[{"$ref":"26"}],"ControllerID":8,"Name":"items","NameAR":"الأصناف","NameTR":"ürün","NameEN":"Items","Url":"/items","ViewUrl":"Admin/Item/Items","ControllerName":"ItemController","IsDelete":false},"Role":{"$ref":"10"},"PermissionID":14,"ControllerID":8,"RoleID":3,"IsDelete":false},{"$id":"28","Controller":{"$id":"29","PermissionList":[{"$ref":"28"}],"ControllerID":9,"Name":"additions","NameAR":"الإضافات","NameTR":"İlaveler","NameEN":"Additions","Url":"/additions","ViewUrl":"Admin/Addition/Additions","ControllerName":"AdditionController","IsDelete":false},"Role":{"$ref":"10"},"PermissionID":15,"ControllerID":9,"RoleID":3,"IsDelete":false},{"$id":"30","Controller":{"$id":"31","PermissionList":[{"$ref":"30"}],"ControllerID":10,"Name":"orders","NameAR":"الطلبات","NameTR":"Siparişler","NameEN":"Orders","Url":"/orders","ViewUrl":"Admin/Order/Orders","ControllerName":"OrderController","IsDelete":false},"Role":{"$ref":"10"},"PermissionID":16,"ControllerID":10,"RoleID":3,"IsDelete":false},{"$id":"32","Controller":{"$id":"33","PermissionList":[{"$ref":"32"}],"ControllerID":11,"Name":"settings","NameAR":"الإعدادات","NameTR":"Ayarlar","NameEN":"Settings","Url":"/settings","ViewUrl":"Admin/Setting/Settings","ControllerName":"SettingController","IsDelete":false},"Role":{"$ref":"10"},"PermissionID":17,"ControllerID":11,"RoleID":3,"IsDelete":false},{"$id":"34","Controller":{"$id":"35","PermissionList":[{"$ref":"34"}],"ControllerID":12,"Name":"security","NameAR":"الأمن","NameTR":"Güvenlik","NameEN":"Security","Url":"/security","ViewUrl":"Admin/Security/Security","ControllerName":"SecurityController","IsDelete":false},"Role":{"$ref":"10"},"PermissionID":18,"ControllerID":12,"RoleID":3,"IsDelete":false}],"UserList":[{"$id":"36","ComplaintSuggestionList":[],"LiveSupportOnlineSessionList":[],"OrderList":[],"Role":{"$ref":"10"},"UserAddressList":[{"$id":"37","UserAddressID":1,"Address":"12 sdsd sd","UserID":1,"User":{"$ref":"36"}}],"UserBranchesList":[],"UserMobileList":[{"$id":"38","UserMobileID":1,"Mobile":"012332323","UserID":1,"User":{"$ref":"36"}}],"UserID":1,"Name":"Ahmed","Email":"dsds@sdsd.com","Password":"123","IsDelete":false,"RoleID":3,"ConfirmPassword":null,"Mobile":null,"Address":null}],"RoleID":3,"NameAR":"مدير نظام","NameTR":"Sistem Yöneticisi","NameEN":"System Administrator","IsDelete":false},"PermissionID":11,"ControllerID":2,"RoleID":3,"IsDelete":false},{"$ref":"19"}],"ControllerID":2,"Name":"photogallery","NameAR":"معرض الصور","NameTR":"Foto Galeri","NameEN":"Photo Gallery","Url":"/photogallery","ViewUrl":"Client/Home/PhotoGallery","ControllerName":"PhotoGalleryController","IsDelete":false},"Role":{"$ref":"5"},"PermissionID":7,"ControllerID":2,"RoleID":2,"IsDelete":false},{"$ref":"15"},{"$ref":"22"}],"UserList":[],"RoleID":2,"NameAR":"عميل","NameTR":"müşteri","NameEN":"Client","IsDelete":false},"PermissionID":6,"ControllerID":1,"RoleID":2,"IsDelete":false},{"$ref":"11"},{"$ref":"18"}],"ControllerID":1,"Name":"home","NameAR":"الصفحة الرئيسية","NameTR":"Anasayfa","NameEN":"Home","Url":"/home","ViewUrl":"Client/Home/Home","ControllerName":"HomeController","IsDelete":false},"Role":{"$ref":"1"},"PermissionID":1,"ControllerID":1,"RoleID":1,"IsDelete":false},{"$ref":"8"},{"$ref":"14"},{"$id":"39","Controller":{"$id":"40","PermissionList":[{"$ref":"39"}],"ControllerID":4,"Name":"login","NameAR":"تسجيل الدخول","NameTR":"Üye Girişi","NameEN":"Login","Url":"/login","ViewUrl":"Client/User/Login","ControllerName":"UserController","IsDelete":false},"Role":{"$ref":"1"},"PermissionID":4,"ControllerID":4,"RoleID":1,"IsDelete":false},{"$id":"41","Controller":{"$id":"42","PermissionList":[{"$ref":"41"}],"ControllerID":5,"Name":"register","NameAR":"انضم إلينا","NameTR":"bize katılın","NameEN":"Join Us","Url":"/register","ViewUrl":"Client/User/Register","ControllerName":"UserController","IsDelete":false},"Role":{"$ref":"1"},"PermissionID":5,"ControllerID":5,"RoleID":1,"IsDelete":false}],"UserList":[],"RoleID":1,"NameAR":"ضيف","NameTR":"konuk","NameEN":"Guest","IsDelete":false},{"$ref":"5"},{"$ref":"10"},{"$ref":"17"}]
2-PermissionList is not load data in view by data-ng-repeat
i need help to fix those problems