Comunidad para aprender y compartir conocimientos en programación
[ Entrar ] - [ Registrarse ]
0
+  -
*
(0)

Formula para la Reputación de usuarios en YoProgramo.net

Esta es el método para la generación de reputación de cada usuario, me pregunto si está bien, quise que tenga en cuenta la inactividad el usuario entre otras muchas cosas.

public static double GetReputation(this IUser user)
{
    var voteCommentService = ServiceLocator.Current.GetInstance<IVoteService<Comment>>();
    var commentvotes = voteCommentService
                            .GetVotesByUser(user)
                                .Where(w => ((Comment)w.VoteFor).ForStory.IsLockedOut != true);

    var storyService = ServiceLocator.Current.GetInstance<IStoryService>();
    var commentService = ServiceLocator.Current.GetInstance<ICommentService>();

    int userCommentsCount = commentService.GetByUser(user).Count;
    int userStoriesCount = storyService.GetByUser(user).Count;

    int votesNegative = (int)commentvotes.Where(x => x.Rate == -1).Count();
    int votePositive = (int)commentvotes.Where(x => x.Rate == 1).Count();

    TimeSpan tsSinceFromRegistered = DateTime.Now.Subtract(user.RegisteredAt);
    int daysSinceFromRegistered = tsSinceFromRegistered.Days;
    if (daysSinceFromRegistered == 0) daysSinceFromRegistered = 1;

    TimeSpan tsInactive = DateTime.Now.Subtract(user.LastActivityAt);
    int daysInactive = tsInactive.Days;
    if (daysInactive == 0) daysInactive = 1;

    double netScore = (double) daysSinceFromRegistered / (daysInactive * 2);

    double reputation = (double)((votePositive * netScore) - votesNegative) + userCommentsCount + userStoriesCount;

    return reputation;
}

Editado: 24 febrero 2010
Foto
Fabián
8
13 julio 2009
Foto
Fabian
7
0
+  -

Lo que veo es que tras un periodo de inactividad irá bajando la reputación hasta que entres en el sistema y automáticamente subirá y compensará el tiempo que se esté fuera.

Por otro lado, si eso funciona así, yo mismo nunca me daré cuenta de que se penaliza la inactividad porque en cuanto entre automáticamente subirá.

Aun así, no es mala idea para fidelizar a los usuarios, hay que entrar a menudo si se quiere mantener la reputación pero igual daría un tiempo de márgen antes de penalizar. Habrá que ver cómo funciona poco a poco y hacer ajustes.

13 julio 2009
Foto
climens
0
0
+  -

@climens es verdad lo que estas planteando. Tendríamos que poner un lapso de gracia sin penalizar.

Con este método siempre se esta penalizando al usuario, no debería ser así.

El lapso de gracia podría ser unos 20 o 30 días.

13 julio 2009
Foto
Fabian
7
0
+  -

El periodo de gracia suena bien y tambien creo que podria existir alguna función cuando estes de vacaciones para asi no ser penalizado por inactividad.

27 julio 2009
Foto
egtorresx
0

Tu Respuesta

o

YoProgramo.NET es una comunidad para unir y ayudar a los programadores hispanos.

Aquí los desarrolladores pueden encontrar repuesta a sus dudas y colaborar con los demás, compartiendo sus conocimientos y experiencia.

Mensaje

Cerrar ventana