コード例 #1
0
        /// <summary>
        ///     Modifies a goal.
        /// </summary>
        /// <param name="goal">The goal.</param>
        /// <param name="username">The username.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <OrchestratorResponseWrapper <GoalViewModel> > EditGoal(GoalViewModel goal, string username)
        {
            var response = new OrchestratorResponseWrapper <GoalViewModel>();

            try
            {
                var request     = assembler.NewEditGoalRequest(goal, username);
                var apiResponse = await dataAccess.EditGoal(request);

                if (!apiResponse.Success)
                {
                    response.AddErrors(apiResponse.Errors);
                }
                else
                {
                    response.Model = assembler.ProxyToViewModel(apiResponse.Goal);
                }

                response.AddWarnings(apiResponse.Warnings);
            }
            catch (Exception ex)
            {
                var err = errorHelper.Create(ex, username, GetType(), "EditGoal");
                response.AddError(err);
            }

            return(response);
        }
コード例 #2
0
        /// <summary>
        ///     Obtains a goal for the given user.
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <param name="username">The username.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <OrchestratorResponseWrapper <ManageGoalsViewModel> > GetGoalsForUser(
            Guid userId,
            string username)
        {
            var response = new OrchestratorResponseWrapper <ManageGoalsViewModel>();

            try
            {
                var request     = assembler.NewGetGoalsForUserRequest(userId, username);
                var apiResponse = await dataAccess.GetGoalsForUser(request);

                if (!apiResponse.Success)
                {
                    response.AddErrors(apiResponse.Errors);
                }
                else
                {
                    response.Model = assembler.NewManageGoalsViewModel(apiResponse.Goals);
                }

                response.AddWarnings(apiResponse.Warnings);
            }
            catch (Exception ex)
            {
                var err = errorHelper.Create(ex, username, GetType(), "GetGoalsForUser");
                response.AddError(err);
            }

            return(response);
        }
コード例 #3
0
        /// <summary>
        ///     Gets the claim for the given user.
        /// </summary>
        /// <param name="model">The log in model.</param>
        /// <returns>If successful, the <see cref="ClaimsIdentity" /> for the user. If not, errors are returned.</returns>
        public async Task <OrchestratorResponseWrapper <ClaimsIdentity> > ValidateUser(LoginViewModel model)
        {
            var response = new OrchestratorResponseWrapper <ClaimsIdentity>();

            try
            {
                var request     = assembler.NewValidateUserRequest(model);
                var apiResponse = await dataAccess.ValidateUser(request);

                if (!apiResponse.Success || !apiResponse.LoginSuccess)
                {
                    response.AddErrors(apiResponse.Errors);

                    return(response);
                }

                response.AddWarnings(apiResponse.Warnings);

                response.Model = assembler.NewClaimsIdentity(apiResponse);
            }
            catch (Exception ex)
            {
                var err = ErrorHelper.Create(ex, model?.EmailAddress, GetType(), "ValidateUser");
                response.AddError(err);
            }

            return(response);
        }
コード例 #4
0
        /// <summary>
        ///     Registers a user.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <OrchestratorResponseWrapper <bool> > RegisterUser(RegisterViewModel model)
        {
            var response = new OrchestratorResponseWrapper <bool>();

            try
            {
                var request     = assembler.NewRegisterUserRequest(model);
                var apiResponse = await dataAccess.RegisterUser(request);

                if (!apiResponse.Success || !apiResponse.RegisterSuccess)
                {
                    response.AddErrors(apiResponse.Errors);
                }

                response.AddWarnings(apiResponse.Warnings);

                response.Model = apiResponse.RegisterSuccess;
            }
            catch (Exception ex)
            {
                var err = ErrorHelper.Create(ex, model?.EmailAddress, GetType(), "RegisterUser");
                response.AddError(err);
            }

            return(response);
        }
コード例 #5
0
        /// <summary>
        ///     Builds and sends a request to obtain bills for a specific user for a given month from the database.
        /// </summary>
        /// <param name="monthNumber">The month number.</param>
        /// <param name="userId">The user identifier.</param>
        /// <param name="username">The username.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <OrchestratorResponseWrapper <IList <KeyValuePair <DateTime, double> > > > GetBillsForUserForMonth(
            int monthNumber,
            Guid userId,
            string username)
        {
            var response = new OrchestratorResponseWrapper <IList <KeyValuePair <DateTime, double> > >();

            try
            {
                var request     = assembler.NewGetBillsForUserForMonthRequest(monthNumber, userId, username);
                var apiResponse = await dataAccess.GetBillsForUserForMonth(request);

                if (!apiResponse.Success)
                {
                    response.AddErrors(apiResponse.Errors);

                    return(response);
                }

                response.Model = apiResponse.Data;
            }
            catch (Exception ex)
            {
                var err = ErrorHelper.Create(ex, username, GetType(), "GetBillsForUserForMonth");
                response.AddError(err);
            }

            return(response);
        }
コード例 #6
0
        /// <summary>
        ///     Builds and sends a request to add a bill to the database.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="username">The username.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <OrchestratorResponseWrapper <BillViewModel> > AddBill(BillViewModel model, string username)
        {
            var response = new OrchestratorResponseWrapper <BillViewModel>();

            try
            {
                var request     = assembler.NewAddBillRequest(model, username);
                var apiResponse = await dataAccess.AddBill(request);

                if (!apiResponse.Success)
                {
                    response.AddErrors(apiResponse.Errors);

                    return(response);
                }

                response.AddWarnings(apiResponse.Warnings);

                response.Model = assembler.NewBillViewModel(apiResponse);
            }
            catch (Exception ex)
            {
                var err = ErrorHelper.Create(ex, username, GetType(), "AddBill");
                response.AddError(err);
            }

            return(response);
        }
コード例 #7
0
        /// <summary>
        ///     Exports the user's bills to the given type.
        /// </summary>
        /// <param name="exportType">Type of the export.</param>
        /// <param name="username">The username.</param>
        /// <param name="userId">The user identifier.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <OrchestratorResponseWrapper <ExportViewModel> > ExportBills(
            ExportType exportType,
            string username,
            Guid userId)
        {
            var response = new OrchestratorResponseWrapper <ExportViewModel>();

            try
            {
                var request     = assembler.NewGetBillsForUserRequest(userId, username);
                var apiResponse = await dataAccess.GetBillsForUser(request);

                if (!apiResponse.Success)
                {
                    response.AddErrors(apiResponse.Errors);
                    return(response);
                }

                response.AddWarnings(apiResponse.Warnings);

                response.Model = assembler.NewExportViewModel(exportType, apiResponse.Bills);
            }
            catch (Exception ex)
            {
                var err = ErrorHelper.Create(ex, username, GetType(), "ExportBills");
                response.AddError(err);
            }

            return(response);
        }
コード例 #8
0
        /// <summary>
        ///     Builds and sends a request to delete a bill from the database.
        /// </summary>
        /// <param name="billId">The bill Id.</param>
        /// <param name="username">The username.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <OrchestratorResponseWrapper <bool> > DeleteBill(Guid billId, string username)
        {
            var response = new OrchestratorResponseWrapper <bool>();

            try
            {
                var request = assembler.NewDeleteBillRequest(billId, username);

                var apiResponse = await dataAccess.DeleteBill(request);

                if (!apiResponse.Success || !apiResponse.DeleteSuccess)
                {
                    response.AddErrors(apiResponse.Errors);

                    return(response);
                }

                response.AddWarnings(apiResponse.Warnings);

                response.Model = apiResponse.Success;
            }
            catch (Exception ex)
            {
                var err = ErrorHelper.Create(ex, username, GetType(), "DeleteBill");
                response.AddError(err);
            }

            return(response);
        }
コード例 #9
0
        /// <summary>
        ///     Builds and sends a request to obtain a expenditure from the database.
        /// </summary>
        /// <param name="expenditureId">The expenditure Id.</param>
        /// <param name="username">The username.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <OrchestratorResponseWrapper <ExpenditureViewModel> > GetExpenditure(
            Guid expenditureId,
            string username)
        {
            var response = new OrchestratorResponseWrapper <ExpenditureViewModel>();

            try
            {
                var request = assembler.NewGetExpenditureRequest(expenditureId, username);

                var apiResponse = await dataAccess.GetExpenditure(request);

                if (!apiResponse.Success)
                {
                    response.AddErrors(apiResponse.Errors);

                    return(response);
                }

                response.AddWarnings(apiResponse.Warnings);

                response.Model = assembler.NewExpenditureViewModel(apiResponse);
            }
            catch (Exception ex)
            {
                var err = ErrorHelper.Create(ex, username, GetType(), "GetExpenditure");
                response.AddError(err);
            }

            return(response);
        }
コード例 #10
0
        /// <summary>
        ///     Builds and sends an HTTP request for the data required to produce the bill category chart.
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <param name="username">The username.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <OrchestratorResponseWrapper <IList <KeyValuePair <string, int> > > > GetBillCategoryChartData(
            Guid userId,
            string username)
        {
            var response = new OrchestratorResponseWrapper <IList <KeyValuePair <string, int> > >();

            try
            {
                var request     = assembler.NewGetBillCategoryChartDataRequest(userId, username);
                var apiResponse = await dataAccess.GetBillCategoryChartData(request);

                if (!apiResponse.Success)
                {
                    response.AddErrors(apiResponse.Errors);
                    return(response);
                }

                response.Model = apiResponse.Data;
            }
            catch (Exception ex)
            {
                var err = errorHelper.Create(ex, username, GetType(), "GetBillCategoryChartData");
                response.AddError(err);
            }

            return(response);
        }
コード例 #11
0
        /// <summary>
        ///     Builds and sends an HTTP request for the data required to produce the expenditure chart.
        /// </summary>
        /// <param name="month">The month, represented as an integer.</param>
        /// <param name="userId">The user identifier.</param>
        /// <param name="userEmail">The user email.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <OrchestratorResponseWrapper <IList <KeyValuePair <DateTime, double> > > > GetExpenditureChartData(
            int month,
            Guid userId,
            string userEmail)
        {
            var response = new OrchestratorResponseWrapper <IList <KeyValuePair <DateTime, double> > >();

            try
            {
                var request     = assembler.NewGetExpenditureChartDataRequest(month, userId, userEmail);
                var apiResponse = await dataAccess.GetExpenditureChartData(request);

                if (!apiResponse.Success)
                {
                    response.AddErrors(apiResponse.Errors);

                    return(response);
                }

                response.Model = apiResponse.Data;
            }
            catch (Exception ex)
            {
                var err = errorHelper.Create(ex, userEmail, GetType(), "GetExpenditureChartData");
                response.AddError(err);
            }

            return(response);
        }