trc-client-core
Version:
The core of the TRC Client
76 lines (72 loc) • 2.14 kB
JavaScript
var Reflux = require('reflux');
var ImmutableStoreMixin = require('reflux-immutable/ImmutableStoreMixin');
var Immutable = require('immutable');
var SodataActions = require('trc-client-core/src/sodata/SodataActions');
import _ from 'lodash';
var SodataStore = Reflux.createStore({
listenables: SodataActions,
mixins: [ImmutableStoreMixin],
init: function () {
this.setState({
technicalTrainers: [],
courseCalendar: null
});
},
onFetchSoDataCompleted: function (data) {
this.setState({
soData: data
});
},
onFetchOverEnrolledSoItemsCompleted: function (items) {
this.setState({
overEnrollledSoItems: items
});
},
onFetchOverEnrolledSoItemCompleted: function (items) {
this.setState({
overEnrollledSoData: Immutable.Map(items[items.length - 1].soData),
overEnrollledParticipants: Immutable.List(items.map(function(item, key){
item.key = key;
return item;
}))
});
},
onFetchCourseCalendar() {
this.setState({
courseCalendar: null
});
},
onFetchCourseCalendarCompleted: function (items){
var calendar = _(items).map((month, key) => {
return {
month: key,
courses: _.groupBy(month, 'course.courseCode')
};
}).value();
this.setState({
courseCalendar: calendar
});
},
onFetchSoItemFailed: console.error.bind(console),
onFetchSoItemCompleted: function(payload){
this.setState({
soItem: payload
});
},
onPostSingleEnrollment: function() {
this.setState({
sendingEnrollemnt: true
});
},
onPostSingleEnrollmentCompleted: function(){
this.setState({
sendingEnrollemnt: false
});
},
onFetchUpcomingSessionsCompleted: function (items){
this.setState({
upcomingCourses: items
});
}
});
module.exports = SodataStore;