CaffGeek/MBACNationals

View on GitHub
Web.Admin/AdminApp/Services/service.data.js

Summary

Maintainability
D
2 days
Test Coverage
(function () {
    "use strict";

    var dataService = function ($http, ngUpload, moment) {
        return {
            SaveTeam: saveTeam,
            RemoveTeam: removeTeam,
            SaveParticipant: saveParticipant,
            AssignParticipantToContingent: assignParticipantToContingent,
            AssignParticipantToTeam: assignParticipantToTeam,
            AssignAlternateToTeam: assignAlternateToTeam,
            AssignCoachToTeam: assignCoachToTeam,
            LoadContingent: loadContingent,
            LoadContingentEvents: loadContingentEvents,
            LoadTeam: loadTeam,
            LoadParticipant: loadParticipant,
            LoadParticipants: loadParticipants,
            LoadAllParticipants: loadAllParticipants,
            LoadAlternates: loadAlternates,
            AssignParticipantToRoom: assignParticipantToRoom,
            RemoveParticipantFromRoom: removeParticipantFromRoom,
            ReorderTeam: reorderTeam,
            LoadRooms: loadRooms,
            ChangeRoomType: changeRoomType,
            ChangeRoomCheckin: changeRoomCheckin,
            SaveInstructions: saveInstructions,
            LoadTravelPlans: loadTravelPlans,
            SaveTravelPlans: saveTravelPlans,
            LoadPracticePlan: loadPracticePlan,
            SavePracticePlan: savePracticePlan,
            SaveParticipantProfile: saveParticipantProfile,
            LoadParticipantProfile: loadParticipantProfile,
            LoadProfiles: loadProfiles,
            LoadSchedule: loadSchedule,
            SaveMatchResult: saveMatchResult,
            LoadMatch: loadMatch,
            UseAlternate: useAlternate,
            LoadTournaments: loadTournaments,
            CreateTournament: createTournament,
            SaveTournamentSettings: saveTournamentSettings,
            SaveSponsor: saveSponsor,
            LoadSponsors: loadSponsors,
            DeleteSponsor: deleteSponsor,
            ReorderSponsor: reorderSponsor,
            SaveNews: saveNews,
            LoadNews: loadNews,
            DeleteNews: deleteNews,
            CreateStepladderMatch: createStepladderMatch,
            GetStepladderMatches: getStepladderMatches,
            UpdateStepladderMatch: updateStepladderMatch,
            DeleteStepladderMatch: deleteStepladderMatch,
            LoadHotels: loadHotels,
            SaveHotel: saveHotel,
            DeleteHotel: deleteHotel,
            LoadGuestPackages: loadGuestPackages,
            SaveGuestPackages: saveGuestPackages,
            LoadCentres: loadCentres,
            SaveCentre: saveCentre,
            DeleteCentre: deleteCentre
        };

        function saveTeam(team, contingent) {
            //TODO: Use extend
            return $http.post('/Setup/Contingent/CreateTeam', {
                ContingentId: contingent.Id,
                TeamId: team.Id,
                Name: team.Name,
                Gender: team.Gender,
                SizeLimit: team.SizeLimit,
                RequiresShirtSize: team.RequiresShirtSize,
                RequiresCoach: team.RequiresCoach,
                RequiresAverage: team.RequiresAverage,
                RequiresBio: team.RequiresBio,
                RequiresGender: team.RequiresGender,
                IncludesSinglesRep: team.IncludesSinglesRep
            });
        }

        function removeTeam(team, contingent) {
            return $http.post('/Setup/Contingent/RemoveTeam', {
                ContingentId: contingent.Id,
                TeamId: team.Id
            });
        }

        function saveParticipant(participant) {
            return participant.Id
                ? $http.post('/Setup/Participant/Update', participant)
                : $http.post('/Setup/Participant/Create', participant);
        }

        function assignParticipantToContingent(participant, contingent) {
            return $http.post('/Setup/Contingent/AssignParticipantToContingent', {
                Id: participant.Id,
                ContingentId: contingent.Id
            });
        }

        function assignParticipantToTeam(participant, team) {
            return $http.post('/Setup/Contingent/AssignParticipantToTeam', {
                Id: participant.Id,
                TeamId: team.Id
            });
        }

        function assignAlternateToTeam(participant, team) {
            return $http.post('/Setup/Contingent/AssignAlternateToTeam', {
                Id: participant.Id,
                TeamId: team.Id
            });
        }

        function assignCoachToTeam(participant, team) {
            return $http.post('/Setup/Contingent/AssignCoachToTeam', {
                Id: participant.Id,
                TeamId: team.Id
            });
        }

        function loadContingent(year, province) {
            return $http.get('/Setup/Contingent', {
                params: {
                    year: year,
                    province: province
                }
            });
        };

        function loadContingentEvents(province) {
            return $http.get('/Setup/Contingent/History', {
                params: { province: province }
            });
        };

        function loadTeam(year, province, teamName) {
            return $http.get('/Setup/Contingent/Team', {
                params: {
                    year: year,
                    province: province,
                    teamName: teamName
                }
            });
        };

        function loadParticipant(id) {
            return $http
                .get('/Setup/Participant', {
                    params: { id: id }
                })
                .success(function (data) {
                    data.Birthday = new Date(parseInt(('' + data.Birthday).substr(6)));
                });
        };

        function loadParticipants(year, province) {
            return $http.get('/Setup/Participant/Contingent', {
                params: {
                    year: year,
                    province: province
                }
            });
        };

        function loadAllParticipants(year) {
            return $http.get('/Setup/Participant/All', {
                params: {
                    year: year
                }
            });
        };

        function loadAlternates(year) {
            return $http.get('/Setup/Participant/Alternates', {
                params: {
                    year: year
                }
            });
        };

        function assignParticipantToRoom(id, roomNumber) {
            return $http.post('/Setup/Participant/AssignToRoom', {
                Id: id,
                RoomNumber: roomNumber
            });
        };

        function removeParticipantFromRoom(id) {
            return $http.post('/Setup/Participant/RemoveFromRoom', {
                Id: id
            });
        };

        function reorderTeam(team, bowler, position) {
            return $http.post('/Setup/Participant/ReorderParticipant', {
                Id: bowler.Id,
                TeamId: team.Id,
                Name: bowler.Name,
                QualifyingPosition: position
            });
        };

        function loadRooms(year, province) {
            return $http.get('/Setup/Contingent/Rooms', {
                params: {
                    year: year,
                    province: province
                }
            });
        };

        function changeRoomType(contingentId, province, roomNumber, type) {
            return $http.post('/Setup/Contingent/ChangeRoomType', {
                Id: contingentId,
                Province: province,
                RoomNumber: roomNumber,
                Type: type
            });
        };

        function changeRoomCheckin(contingentId, province, roomNumber, checkin, checkout) {
            var mcheckin = moment.utc(moment(checkin).format('YYYY-MM-DDTHH:mm'));
            var mcheckout = moment.utc(moment(checkout).format('YYYY-MM-DDTHH:mm'));

            return $http.post('/Setup/Contingent/ChangeRoomCheckin', {
                Id: contingentId,
                Province: province,
                RoomNumber: roomNumber,
                Checkin: mcheckin,
                Checkout: mcheckout
            });
        };
        
        function loadTravelPlans(year, province) {
            return $http.get('/Setup/Contingent/TravelPlans', {
                params: {
                    year: year,
                    province: province
                }
            });
        };

        function saveTravelPlans(travelPlans) {
            angular.forEach(travelPlans.travelPlans, function (travelPlan) {
                var d = moment(travelPlan.When);
                travelPlan.When = moment.utc(d.format('YYYY-MM-DDTHH:mm'));
            });
            return $http.post('/Setup/Contingent/SaveTravelPlans', travelPlans);
        };

        function loadPracticePlan(year, province) {
            return $http.get('/Setup/Contingent/PracticePlan', {
                params: {
                    year: year,
                    province: province
                }
            });
        };

        function savePracticePlan(practicePlan) {
            return $http.post('/Setup/Contingent/SavePracticePlan', practicePlan);
        };

        function saveInstructions(contingentId, province, instructions) {
            return $http.post('/Setup/Contingent/SaveReservationInstructions', {
                Id: contingentId,
                Province: province,
                Instructions: instructions
            });
        };

        function saveParticipantProfile(participant) {
            return $http.post('/Setup/Participant/Profile', participant);
        };

        function loadParticipantProfile(participant) {
            return $http.get('/Setup/Participant/Profile', {
                params: { id: participant.Id }
            });
        };

        function loadProfiles(year) {
            return $http.get('/Setup/Participant/Profiles/', {
                params: {
                    year: year
                }
            });
        };

        function loadSchedule(year, division) {
            return $http.get('/Setup/Scores/Schedule/' + year + '/' + division);
        };

        function saveMatchResult(match) {
            return $http.post('/Setup/Scores/SaveMatchResult', match);
        };

        function loadMatch(match) {
            return $http.get('/Setup/Scores/Match', {
                params: { matchId: match.Id }
            });
        };

        function useAlternate(participant, team) {
            return $http.post('/Setup/Participant/UseAlternate', {
                Id: participant.Id,
                AlternateId: team.Alternate
            });
        };

        function loadTournaments() {
            return $http.get('/Setup/Tournament/All');
        };
        
        function createTournament(tournament) {
            return $http.post('/Setup/Tournament/Create', tournament);
        };

        function saveTournamentSettings(year, tournamentSettings) {
            return $http.post('/Setup/Tournament/Settings/' + year, tournamentSettings);
        };

        function saveSponsor(year, sponsor) {
            return ngUpload.upload({
                url: '/Setup/Sponsors/Save/' + year,
                fields: { id: sponsor.Id, name: sponsor.Name, website: sponsor.Website },
                file: sponsor.Image
            });
        };

        function loadSponsors(year) {
            return $http.get('/Setup/Sponsors/List/' + year);
        };

        function deleteSponsor(year, id) {
            return $http.post('/Setup/Sponsors/Delete/' + year, {
                id: id
            });
        };

        function reorderSponsor(year, sponsor, position) {
            return $http.post('/Setup/Sponsors/Reorder/' + year, {
                Id: sponsor.Id,
                Name: sponsor.Name,
                Position: position
            });
        };

        function saveNews(year, news) {
            return $http.post('/Setup/News/Save/' + year, news);
        };

        function loadNews(year) {
            return $http.post('/Setup/News/List/' + year);
        };

        function deleteNews(year, id) {
            return $http.post('/Setup/News/Delete/' + year, {
                id: id
            });
        };

        function createStepladderMatch(year, home, away) {
            return $http.post('/Setup/Scores/CreateStepladderMatch/' + year, {
                Year: year,
                HomeBowlerId: home.Id,
                AwayBowlerId: away.Id,
            });
        };

        function getStepladderMatches(year) {
            return $http.get('/Setup/Scores/StepladderMatches/' + year);
        };

        function updateStepladderMatch(match) {
            return $http.post('/Setup/Scores/UpdateStepladderMatch', match);
        };

        function deleteStepladderMatch(match) {
            return $http.post('/Setup/Scores/DeleteStepladderMatch/', match);
        };

        function loadHotels(year) {
            return $http.get('/Setup/Hotels/List/' + year);
        };

        function saveHotel(year, hotel) {
            var d1 = moment(hotel.DefaultCheckin);
            hotel.DefaultCheckin = moment.utc(d1.format('YYYY-MM-DD')).format('YYYY-MM-DD');

            var d2 = moment(hotel.DefaultCheckout);
            hotel.DefaultCheckout = moment.utc(d2.format('YYYY-MM-DD')).format('YYYY-MM-DD');

            return ngUpload.upload({
                url: '/Setup/Hotels/Save/' + year,
                fields: {
                    id: hotel.Id,
                    name: hotel.Name,
                    website: hotel.Website,
                    phonenumber: hotel.PhoneNumber,
                    checkin: hotel.DefaultCheckin,
                    checkout: hotel.DefaultCheckout,
                    roomtypes: hotel.RoomTypes
                },
                file: [hotel.Logo, hotel.Image]
            });
        };

        function deleteHotel(year, id) {
            return $http.post('/Setup/Hotels/Delete/' + year, {
                id: id
            });
        };

        function loadGuestPackages(year) {
            return $http.get('/Setup/GuestPackages/List/' + year);
        };

        function saveGuestPackages(year, guestpackages) {
            return $http.post('/Setup/GuestPackages/Save/' + year, {
                Year: year,
                GuestPackages: guestpackages
            });
        };

        function loadCentres(year) {
            return $http.get('/Setup/Centres/List/' + year);
        };

        function saveCentre(year, centre) {
            return ngUpload.upload({
                url: '/Setup/Centres/Save/' + year,
                fields: {
                    id: centre.Id,
                    name: centre.Name,
                    website: centre.Website,
                    phonenumber: centre.PhoneNumber,
                    address: centre.Address
                },
                file: [centre.Image]
            });
        };

        function deleteCentre(year, id) {
            return $http.post('/Setup/Centres/Delete/' + year, {
                id: id
            });
        };
    };

    app.factory('dataService', ['$http', 'Upload', 'moment', dataService]);
}());