group attendance

Groups attendance and close group

bug
This commit is contained in:
safiyu 2013-09-20 18:26:49 +05:30
parent a5c15d5bed
commit f65815a8fd
10 changed files with 142 additions and 45 deletions

View File

@ -521,5 +521,6 @@
"label.enternote":"Enter Note",
"label.associatemembers":"Associate Members",
"label.disassociatemembers":"Disassociate Members",
"label.confirmdelete":"Confirm Delete"
"label.confirmdelete":"Confirm Delete",
"label.meetingdate":"Meeting Date"
}

View File

@ -0,0 +1,27 @@
(function(module) {
mifosX.controllers = _.extend(module, {
CloseGroupController: function(scope, routeParams, route, location, resourceFactory) {
scope.group = [];
scope.template = [];
resourceFactory.groupResource.get({groupId: routeParams.id,associations:'all'} , function(data) {
scope.group = data;
});
resourceFactory.groupTemplateResource.get({command:'close'}, function(data){
scope.template = data;
});
scope.closeGroup = function(){
this.formData.locale = 'en';
this.formData.dateFormat = 'dd MMMM yyyy';
resourceFactory.groupResource.save({groupId: routeParams.id ,command:'close'},this.formData, function(data){
location.path('/viewgroup/' + data.resourceId);
});
};
}
});
mifosX.ng.application.controller('CloseGroupController', ['$scope', '$routeParams','$route', '$location', 'ResourceFactory', mifosX.controllers.CloseGroupController]).run(function($log) {
$log.info("CloseGroupController initialized");
});
}(mifosX.controllers || {}));

View File

@ -0,0 +1,38 @@
(function(module) {
mifosX.controllers = _.extend(module, {
GroupAttendanceController: function(scope, resourceFactory , routeParams, location) {
scope.group = [];
scope.tempData = {};
resourceFactory.groupResource.get({groupId: routeParams.groupId,associations:'all'} , function(data) {
scope.group = data;
scope.meeting = data.collectionMeetingCalendar;
});
resourceFactory.groupMeetingResource.getMeetingInfo({groupId: routeParams.groupId,templateSource: 'template',calenderId: routeParams.calendarId}, function(data) {
scope.clients = data.clients;
scope.attendanceOptions = data.attendanceTypeOptions;
});
scope.attendanceUpdate = function(id){
this.formData.clientsAttendance=[];
for(var i=0; i<scope.clients.length;i++)
{
this.formData.clientsAttendance[i] ={clientId:scope.clients[i].id,attendanceType:this.tempData[scope.clients[i].id]};
}
this.formData.locale = 'en' ;
this.formData.dateFormat = 'dd MMMM yyyy';
this.formData.calendarId = id;
resourceFactory.groupMeetingResource.save({groupId: routeParams.groupId,calenderId: routeParams.calendarId},this.formData, function(data) {
location.path('/viewgroup/' + routeParams.groupId);
});
}
}
});
mifosX.ng.application.controller('GroupAttendanceController', ['$scope', 'ResourceFactory', '$routeParams','$location', mifosX.controllers.GroupAttendanceController]).run(function($log) {
$log.info("GroupAttendanceController initialized");
});
}(mifosX.controllers || {}));

View File

@ -61,7 +61,6 @@
});
});
};
scope.activateGrouppop = function() {
scope.choice = 2;
};
@ -76,24 +75,7 @@
});
});
};
scope.closureGrouppop = function(){
resourceFactory.groupTemplateResource.get({command:'close'}, function(data){
scope.template = data;
});
scope.choice = 1;
};
scope.closeGroup = function(id){
var newClosure = new Object();
newClosure.locale = 'en';
newClosure.dateFormat = 'dd MMMM yyyy';
newClosure.closureDate = this.formData.closureDate;
newClosure.closureReasonId = this.formData.closureReasonId
resourceFactory.groupResource.save({groupId: id ,command:'close'},newClosure, function(data){
resourceFactory.groupResource.get({groupId: id}, function(data){
route.reload();
});
});
};
scope.deleteGrouppop = function(){
scope.choice = 3;
} ;

View File

@ -81,7 +81,9 @@ define(['underscore', 'mifosX'], function() {
'savings/ViewTransactionController',
'groups/CreateGroupController',
'groups/AddMemberController',
'groups/EditGroupController'
'groups/EditGroupController',
'groups/GroupAttendanceController',
'groups/CloseGroupController'
],
filters: [
'StatusLookup'

View File

@ -225,6 +225,12 @@
})
.when('/addmember', {
templateUrl: 'views/groups/addmember.html'
})
.when('/groupattendance', {
templateUrl: 'views/groups/groupattendance.html'
})
.when('/closegroup/:id', {
templateUrl: 'views/groups/closegroup.html'
});
$locationProvider.html5Mode(false);
};

View File

@ -51,6 +51,9 @@
groupTemplateResource: defineResource(apiVer + "/groups/template", {}, {
get: {method: 'GET', params: {}}
}),
groupMeetingResource:defineResource(apiVer + "/groups/:groupId/meetings/:templateSource", {groupId:'@groupId',templateSource:'@templateSource'}, {
getMeetingInfo: {method:'GET', params: {}}
}),
runReportsResource: defineResource(apiVer + "/runreports/:reportSource", {reportSource : '@reportSource'}, {
get: {method: 'GET', params: {}, isArray:true},
getReport: {method: 'GET', params: {}}

View File

@ -0,0 +1,21 @@
<form data-ng-controller="CloseGroupController">
<div class="paddedleft">
<h3>{{ 'label.confirm' | translate }}</h3>
<div>
<label class="control-label">{{ 'label.closuredate' | translate }}</label>
<input type="text" data-ng-model="formData.closureDate" required/>
</div>
<div>
<label class="control-label">{{ 'label.closurereasons' | translate }}</label>
<select ng-model="formData.closureReasonId">
<option ng-repeat="reason in template.closureReasons" value="{{reason.id}}">{{reason.name}}</option>
</select>
</div>
<br/>
<div>
<a href="#/viewgroup/{{group.id}}" class="btn btn-primary">{{ 'label.cancel' | translate }}</a>
<button type="button" class="btn btn-primary" data-ng-click="closeGroup()">{{ 'label.confirm' | translate }}</button>
</div>
</div>
<hr/>
</form>

View File

@ -0,0 +1,38 @@
<div ng-controller="GroupAttendanceController">
<form class="form-horizontal well">
<fieldset>
<legend>{{'label.attendance' | translate}}</legend>
<div class="control-group">
<label class="control-label">{{'label.meetingdate' | translate}}</label>
<div class="controls">
<input type="text" id="name" ng-model="formData.meetingDate">Next Meeting on:{{meeting.nextTenRecurringDates[0]}}
</div>
</div>
<table class="table table-striped" width="100%">
<thead>
<tr><td colspan="5">&nbsp;</td></tr>
<tr class="graybg">
<th>{{ 'label.code.name' | translate }}</th>
<th>{{ 'label.attendance' | translate }}</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="client in clients">
<td>{{client.displayName}}</td>
<td>
<div>
<select ng-model="tempData[client.id]">
<option data-ng-repeat="attendance in attendanceOptions" value="{{attendance.id}}">{{attendance.value}}</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
<div class="offset">
<a href="#/viewgroup/{{group.id}}" class="btn btn-primary">{{'label.cancel' | translate}}</a>
<button type="button" class="btn btn-primary" data-ng-click="attendanceUpdate(meeting.id)">{{'label.save' | translate}}</button>
</div>
</fieldset>
</form>
</div>

View File

@ -3,7 +3,7 @@
<ul class="breadcrumb">
<li>
<div class='gavatar'>
<img class="avatarpic" title="member1" src="../app/images/021.jpg">
<img class="avatarpic" title="member1" src="../app/images/blank_avatar.jpg">
<img class="avatarpic" title="member2" src="../app/images/1.jpg">
<img class="avatarpic next-row" title="member3" src="../app/images/2.jpg">
<img class="avatarpic next-row" title="member4" src="../app/images/3.jpg">
@ -36,33 +36,12 @@
<div class="btn-group pull-right" data-ng-hide="group.status.value == 'Closed'">
<button class="btn btn-primary" data-ng-click="activateGrouppop()" data-ng-hide="group.status.value=='Active'"><i class="icon-check-sign icon-white"></i>{{ 'label.activate' | translate }}</button>
<a href="#/editgroup/{{group.id}}" class="btn btn-primary"><i class="icon-edit icon-white"></i>{{ 'label.edit' | translate }}</a>
<button class="btn btn-primary" data-ng-click="closureGrouppop()"><i class="icon-remove-circle icon-white"></i>{{ 'label.close' | translate }}</button>
<a href="#/closegroup/{{group.id}}" class="btn btn-primary"><i class="icon-remove-circle icon-white"></i>{{ 'label.close' | translate }}</a>
<button class="btn btn-primary" data-ng-click="deleteGrouppop()" data-ng-hide="group.status.value=='Active'"><i class="icon-trash icon-white"></i>{{ 'label.delete' | translate }}</button>
</div>
</div>
<br/>
<div data-ng-switch on="choice">
<form ng-switch-when="1">
<div class="paddedleft">
<h3>{{ 'label.confirm' | translate }}</h3>
<div>
<label class="control-label">{{ 'label.closuredate' | translate }}</label>
<input type="text" data-ng-model="formData.closureDate" required/>
</div>
<div>
<label class="control-label">{{ 'label.closurereasons' | translate }}</label>
<select ng-model="formData.closureReasonId">
<option ng-repeat="reason in template.closureReasons" value="{{reason.id}}">{{reason.name}}</option>
</select>
</div>
<br/>
<div>
<button type="button" class="btn btn-primary" data-ng-click="cancel(group.id)">{{ 'label.cancel' | translate }}</button>
<button type="button" class="btn btn-primary" data-ng-click="closeGroup(group.id)">{{ 'label.confirm' | translate }}</button>
</div>
</div>
<hr/>
</form>
<form ng-switch-when="2">
<div class="paddedleft">
<div>
@ -201,7 +180,7 @@
<a href="#/addmember?groupId={{group.id}}&officeId={{group.officeId}}" class="btn btn-primary pull-right"><i class="icon-plus-sign-alt icon-white"></i>{{ 'label.add' | translate }}</a>
<button type="button" class="btn btn-primary pull-right" data-ng-click="disassociateMemberpop(group.id)">{{ 'label.disassociatemember' | translate }}</button>
<button type="button" class="btn btn-primary pull-right" data-ng-click="associateMemberpop(group.id)">{{ 'label.associatemember' | translate }}</button>
<a href="#/" class="btn btn-primary pull-right">{{ 'label.attendance' | translate }}</a>
<a href="#/groupattendance?groupId={{group.id}}&calendarId={{group.collectionMeetingCalendar.id}}" class="btn btn-primary pull-right">{{ 'label.attendance' | translate }}</a>
</div>
</div>
<div data-ng-switch on="choice">