Code Monkey home page Code Monkey logo

website-issues's People

Contributors

tbeswick96 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

website-issues's Issues

Port small menus to modals

The following menus should be moved from their current unique pages to modal menus using material design. See create unit on the units page for an example of how it should be.

  • Connect teamspeak
  • Connect steam
  • Register
  • Error display

Recruitment workflow

See old post:
#1

The current flow:

  • The current flow has applicants needing to do the following before they can create an application: create an account, connect teamspeak and connect steam.
  • The application includes the following fields: firstname, lastname, date of birth, home nation, hasMilitaryExperience, How long have they been playing arma, How much experience do they have with arma units, personal background information, are they interested in nco leadership/officer leadership/aviation, who referred them and agree to terms and conditions.
  • Once they create an application it is assigned to the recruiter with fewest in progress applications.
  • The recruiter can then comment.
  • The recruiter can rate on the following fields : http://prntscr.com/hkb3pk.png
  • The recruiter can accept or reject.

The suggested flow we are planning on:

  • An application must be approved by the SR1 recruiter, an SR1 lead and an SR10 operator.
  • SR1 leads can reassign apps.
  • Fields to rate applications on can be changed at any time by an SR1 lead.
  • Applicant can comment on his waiting application and the reviewers can also reply.
  • Applicant can view basic info about his in progress application.
  • SR1 members can step out, so no applications are assigned to themselves for when they are on holiday.

Loading Component

Develop a generic reusable component for the frontend that shows a loading spinner rather than a page being black or freezing while submitting/opening.

Promotions, Transfers and Assignments v1

see #20

Promotion & Transfers Core plan:

  • Requests are created by any 1ic 2ic or ncoic of a group.
  • Request is reviewed by multiple people and must be approved by everyone.
  • Reviewers list is made of 1ic 2ic and ncoic of the group the requester belongs to. And recursively finds parent groups and their 1ic 2ic and ncoic.
  • Accepted on every reviewer approving.

Assignments Core plan:

  • Reassigning subordinates within your org does not need review and can be done freely as long as it does not involve promotion.

Reusable comments thread

Create a single database section for comment threads and c# service for easily creating/reading/inserting to a thread.

Groups v1

Considering what the Group model should be like. It heavily influences how things like Units will be implemented.

currently it simply has name & members.

I can imagine the following:

  • name (1st Platoon)
  • short name (e.g 1 Plt)
  • callsign (Guardian 1)
  • Type (e.g section)
  • Regiment
    • name
    • short name
    • callsign
    • type (e.g combat unit/sr unit)
  • parent group (an id to another group)
  • group roles (key value)
    • 1ic = userid
    • 2ic = userid
    • ncoic = userid
  • member collections (stored as an array of arrays so more collections can be added later easily.)
    • members
      • collection name
      • ids
    • inactive members
      • collection name
      • ids

Roles are stored in user accounts along with ranks right now. However this means 1 role can exist per account which might not work.

in this model a platoon has the command section as 1 group. Each section is then their own group. With their parent group being the command section of the platoon.

Information Systems

See original post:
#2

Out core information sharing plan:

  • We won't be having a core forum system. They don't really suit our community and tend to be used to do things manually in other communities such as keeping a sticky roster post up to date.
  • We do need a place to post official documents about the unit.
  • We do need a place to post announcements.
  • Discord and teamspeak provide sufficient sufficient community communication platforms.

Remaining questions:

  • Are we in agreement with our core plan?
  • Where do we need commenting ability? Who should be able to comment? Who can/is responsible for administering?
  • Is any direct messaging functionality needed on the website?
  • Should announcements be pulled from Discord or made on the website?
  • Where should announcements on the website be propagated to? (Discord/Website/Email)?

Recruitment System

We need to have the recruitment system fully integrated into the website and the basic member functions of the website.
Currently we use google sheets to receive and track applications, as well as track the member base.

Basic recruitment flow:

  • New people should be able to read information about the unit, and then be taken to a form where they make an application.
  • The application will create them as a member pending review. The application should be visible to SR10 (not SR1)
  • SR10 should be able to view the full application and either accept or decline based on the information given (by the applicant).
  • If the application is declined, it should be marked as declined and archived (NOT deleted). The applicant could receive a notification or see a status on their application page (thoughts? some other units with similar systems don't do anything to notify a declined application).
  • If the application is accepted, it should be automatically assigned to an SR1, who will then be able to see the application. The applicant member should be made a candidate (automatically).
  • The SR1 will then do their normal duties, and update the application status as they go.
  • Once the applicant completes stage 3 (post-candidate-op), SR10 should be able to finalise the application, which will make the member a recruit. They should also have the option to decline it again. SR1 should not be able to do this.

Application form

  • First name (Varchar 35)
  • Last name (Varchar 35)
  • Date of birth (Date)
  • Steam64 (Varchar 17)
  • Email (Varchar 100?)
  • Unit preference (Int (enum))
  • Role preference (Int (enum))
  • Previous MilSim (Bool)
  • Military background (Bool)
  • Leadership preference (Bool)
  • Personal background (Varchar 1000)?
  • Skills (Varchar 500)?

Application form details

  • The name should automatically be formatted into LastName.FirstInitial for their member username. I dislike when people don't fill this in properly on the google sheet, so some automatic validation for requiring 2 names would be good.
  • For DOB currently we have a cut off at 16, but younger people still apply and lie about their age. They don't last long but it wastes our time. There are 2 approaches we could take here. 1) Explicitly state the minimum age requirement. The problem with this is people will lie as they currently do, which wastes our time further down the line (training etc). 2) Appear to allow all ages, but if DOB given is less than 16, the application is declined and archived. Problem with this is it's dishonest, but might make our life easier as people will be less inclined to lie if they don't know there is an age requirement.
  • The steam64 is another thing people don't fill in properly. Validating this could be complicated, but for our ease, this needs to be the "76561198102245997" number. I think the best approach might be to explicitly state that only this number is required, and to validate it so only exactly 16 numbers is allowed. (Check format of steam64). A full steam link should be formatted upon submission and set in the user details. This avoids people giving an incorrect link.
  • Unit preference should be 1 Para or JSFAW.
  • Role preference should be conditional based on unit preference (Only 1 para roles show when 1 para selected, and only JSFAW squadrons show when JSFAW selected).

Details

  • One large problem we have is retention at the recruit stage. Most recruits realise we are quite hardcore milsim which they weren't expecting. To help with this, applicants should be forced to read information on the unit before being taken to the application form. This won't solve the issue totally, but might help.
  • With the google sheet currently, applications are assigned based on which SR1 are active and how many applications they have at that time. The same should be applied here. SR1 should have the option to disable themselves in their member area so they stop getting applications (SR10 should be notified of this).
  • A member should have several states: Application Submitted, Application Accepted, Application Stage 1 Complete, Application Stage 2 Complete, Application Stage 3 Complete, Enlisted, Application Declined, Discharged. (These can be expanded based on other features and needs e.g LOA) SR10 should b able to edit all of these states. SR1 should only be able to assign the "Stage" states, and only if the application has been accepted, and not if the application has been declined or any other state assigned (declined, discharged etc)

Please add further features below

Extend profile information

So far the profile information displays only the minimum level of information at the moment. The design of the page has just been finalized.

This task will include more information being displayed on the profile. There will likely be a third and final iteration with more dynamic information integrating with other modules.

The information that should be displayed as part of the scope of this task is as follows:

  • Role
  • Unit
  • OiC

C# & Angular

As mentioned before, Angular and C# can't really work with each other properly except for backend and front end. e.g Angular is doing the rendering of the FRONTEND and do API calls towards the backend (C#) which responds back with REST DATA.

Examples:
https://www.linkedin.com/pulse/http-post-get-web-api-calls-using-angularjs-suresh-muttagi
http://www.c-sharpcorner.com/UploadFile/65794e/web-api-with-angular-js/
https://code.msdn.microsoft.com/AngularJS-with-Web-API-43e5de16

My question is:
Scratch the complete set up and re-do it the appropriate way with Angular? Or just keep everything C# and use Razor. Though loosing the powerful Angular DOMs..

The HTML design will not be lost, it will be re used. Just authentication system and structure has to be re-done.

@frostebite @tbeswick96

Roster and LOA

Currently the Roster system that is based on google docs is not working on the level of efficiency we would like. All the task on it are manual and need to be overseen by SR10 officers.

Roster

  • The new roster it to be clean and only display essential information about a person, This include rank, name and unit they belong to and year they joined.

  • Roster should be visible to all people with the rank of recruit or higher. Roster SHOULD NOT visible to anyone without the required rank.

  • Roster should have the ability to be edited bu the command, adding, changing and removing people from it.

  • Aim is for the roster to be automated in terms of checking how active certain people are. It should connect along with TeamSpeak and register when was their last visit. However this is not a must have.

LOA

Right now we have no effective way of checking the LOA's effectively. LOA system needs to be more simple.

  • LOA system will be tight into the roster. A member will be able to log in, go to the roster and they will see the full list of members. There would be a small icon next to each name where each member could click on their own icon. Automatically all members would be signed up for the operation. If a member know he will not be able to attend, he can click to the icon and his name will be marked red while all these who attend green.

  • You will be able to change your LOA status from Sunday to Friday 12am GMT.

More to be added.

Teamspeak viewer

Instead of using the official teamspeak viewer plugin which requires jquery, can't easily by styled, shows too much information and seemingly doesn't work with the optional parameters it's supposed to support. We are going to use a simpler one made by us.

A static version is already on branch homepage/teamspeak. The accounts?filter=online api already serves the needed data.

  • wireframes
  • static version
  • frontend dummy data
  • api serving dummy data
  • api functioning correctly
  • api and frontend connected and working fully

Information Systems (replace forums)

This was discussed a while back, but the general thought is that a forum in the traditional sense (like we currently have) is pointless as our main communication channels are slack and whatsapp.
Therefore the idea was not to have a forum.

Instead we have areas each dedicated to a function:

  • One where permanent information can be uploaded. This would be things like training documents, information, guides, etc. Permission to view is based on tags (only SR1 can see SR1 guide etc)
  • One where announcements, news, events etc can be posted in a blog type fashion. Comments can be made on these.

Add suggestions for other areas below. They should be explicitly different from any others.

Reusable reviewers service

This is a c# service for different areas to create an object with different reviewers and then be able to vote.

TeamspeakUsers causing ToList - Value cannot be null. Parameter name: source

Error occured at http://netcoretemplateapi.azurewebsites.net/api/teamspeak/users 12/6/2017 7:46:49 PM

Error message: Value cannot be null. Parameter name: source

Error stacktrace:
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at UKSFWebsite.Api.Controllers.Teamspeak.TeamspeakClientsController.GetUsers() in D:\home\site\repository\UKSFWebsite.api\Controllers\Teamspeak\TeamspeakClientsController.cs:line 40 at lambda_method(Closure , Object , Object[] ) at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__12.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__14.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.d__22.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.d__17.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.d__15.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at UKSFWebsite.Api.Middleware.ErrorHandlingMiddleware.d__2.MoveNext() in D:\home\site\repository\UKSFWebsite.api\Middleware\ErrorHandlingMiddleware.cs:line 28

Headers of request:
{ "Cache-Control": [ "max-age=259200" ], "Connection": [ "Keep-Alive" ], "Accept": [ "application/json, text/plain, */*" ], "Accept-Encoding": [ "gzip, deflate" ], "Accept-Language": [ "en-GB,en-US;q=0.9,en;q=0.8" ], "Authorization": [ "bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiQ29ud2F5Lk0iLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9lbWFpbGFkZHJlc3MiOiJNYXhpMjM0NUBob3RtYWlsLmNvLnVrIiwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvc2lkIjoiNWExZjQxZjRiNjVkMGYyZGQwNDEwYzg3In0.5QmPkYtHJiUDSOoQRaB9GK2Br7GtMZFvphg75yBCRgE" ], "Host": [ "netcoretemplateapi.azurewebsites.net" ], "Max-Forwards": [ "10" ], "Referer": [ "http://uk-sf.com/TeamspeakConnect" ], "User-Agent": [ "Mozilla/5.0 (Linux; Android 7.0; SM-G950F Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36" ], "Origin": [ "http://uk-sf.com" ], "X-WAWS-Unencoded-URL": [ "/api/teamspeak/users" ], "X-Original-URL": [ "/api/teamspeak/users" ], "X-ARR-LOG-ID": [ "2ccc86b5-836f-4d81-8771-97153349cb21" ], "DISGUISED-HOST": [ "netcoretemplateapi.azurewebsites.net" ], "X-SITE-DEPLOYMENT-ID": [ "netcoretemplateapi" ], "WAS-DEFAULT-HOSTNAME": [ "netcoretemplateapi.azurewebsites.net" ], "X-Forwarded-For": [ "51.140.101.233:60011" ], "MS-ASPNETCORE-TOKEN": [ "ff561e36-eba8-4cbb-9878-08b13c37593f" ], "X-Original-For": [ "127.0.0.1:49629" ], "X-Original-Proto": [ "http" ] }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.