Exemple #1
0
		public ActionResult ChangeUserData(UserManagmentViewModel model)
		{
			model.SaveUserData(User.Identity.Name);

			return RedirectToAction("Management", new
			{
				Message = ManageMessageId.ChangeUserData
			});
		}
        public HttpResponseMessage Post(UserManagmentViewModel obj)
        {
            try
            {
                obj.LoggedUser = Person.GetLoggedPerson(User);
                if (obj.LoggedUser.Status == StatusEnum.Deleted)
                {
                    obj.ErrorMessage = "Uprawnienia uzytkownika wygasly!";
                    return(Request.CreateResponse(HttpStatusCode.Created, obj));
                }

                if (obj.CurrentOrganization == null)
                {
                    obj.CurrentOrganization = db.Organizations.FirstOrDefault(x => x.OrganizationID == obj.LoggedUser.OrganizationID);
                }

                if (obj.CurrentOrganization == null)
                {
                    obj.ErrorMessage = "Brak organizacji dla której można pobrać użytkowników";
                    return(Request.CreateResponse(HttpStatusCode.Created, obj));
                }


                var take = 10;
                var skip = 0;


                switch (obj.ActionType)
                {
                case BaseActionType.Get:
                    //todo logs for add and send invitation
                    obj.PeopleCount = (from p in db.Users
                                       where p.OrganizationID == obj.CurrentOrganization.OrganizationID &&
                                       (p.Status == StatusEnum.Active || p.Status == StatusEnum.Blocked) &&
                                       (p.Profile == ProfileEnum.User || p.Profile == ProfileEnum.Creator || p.Profile == ProfileEnum.Administrator || p.Profile == ProfileEnum.Manager)
                                       orderby p.RegistrationDate
                                       select p).Count();


                    var people = (from p in db.Users
                                  where p.OrganizationID == obj.CurrentOrganization.OrganizationID &&
                                  (p.Status == StatusEnum.Active || p.Status == StatusEnum.Blocked) &&
                                  (p.Profile == ProfileEnum.User || p.Profile == ProfileEnum.Creator || p.Profile == ProfileEnum.Administrator || p.Profile == ProfileEnum.Manager)
                                  orderby p.RegistrationDate
                                  select p).Take(20).ToList();

                    var deleted = (from p in db.Users
                                   where p.OrganizationID == obj.CurrentOrganization.OrganizationID &&
                                   (p.Status == StatusEnum.Deleted) &&
                                   (p.Profile == ProfileEnum.User || p.Profile == ProfileEnum.Creator || p.Profile == ProfileEnum.Administrator || p.Profile == ProfileEnum.Manager)
                                   orderby p.RegistrationDate
                                   select p).Take(20).ToList();


                    var groups = (from gio in db.Groups
                                  join g in db.GroupsInOrganizations on gio.ProfileGroupID equals g.ProfileGroupID
                                  select gio).ToList();



                    foreach (var p in people)
                    {
                        p.AssignedTrainings = (from t in db.TrainingResults
                                               join tr in db.Trainings on t.TrainingID equals tr.TrainingID
                                               where t.PersonID == p.Id
                                               orderby t.StartDate descending
                                               select new TrainingDto
                        {
                            Id = t.TrainingID,
                            StartDate = t.StartDate.Value,
                            EndDate = t.EndDate,
                            Result = t.Rating,
                            Name = tr.Name
                        }).Take(5).ToList();

                        p.AssignedTrainingCount = (from t in db.TrainingResults
                                                   join tr in db.Trainings on t.TrainingID equals tr.TrainingID
                                                   where t.PersonID == p.Id
                                                   orderby t.StartDate descending
                                                   select t).Count();

                        var assignedGroups = (from pg in db.PeopleInGroups
                                              where pg.PersonID == p.Id
                                              select pg).ToList();

                        if (assignedGroups != null)
                        {
                            p.AssignedGroups = new List <ProfileGroup2Person>();
                            foreach (var grp in assignedGroups)
                            {
                                p.AssignedGroups.Add(new ProfileGroup2Person()
                                {
                                    ProfileGroupID = grp.ProfileGroupID,
                                    GroupName      = groups.FirstOrDefault(x => x.ProfileGroupID == grp.ProfileGroupID).Name
                                });
                            }
                        }
                    }


                    obj.People = people;

                    if (deleted != null && deleted.Any())
                    {
                        foreach (var p in deleted)
                        {
                            p.AssignedTrainings = (from t in db.TrainingResults
                                                   join tr in db.Trainings on t.TrainingID equals tr.TrainingID
                                                   where t.PersonID == p.Id
                                                   orderby t.StartDate descending
                                                   select new TrainingDto
                            {
                                Id = t.TrainingID,
                                StartDate = t.StartDate.Value,
                                EndDate = t.EndDate,
                                Result = t.Rating,
                                Name = tr.Name
                            }).ToList();

                            var assignedGroups = (from pg in db.PeopleInGroups
                                                  where pg.PersonID == p.Id
                                                  select pg).ToList();

                            if (assignedGroups != null)
                            {
                                p.AssignedGroups = new List <ProfileGroup2Person>();
                                foreach (var grp in assignedGroups)
                                {
                                    p.AssignedGroups.Add(new ProfileGroup2Person()
                                    {
                                        ProfileGroupID = grp.ProfileGroupID,
                                        GroupName      = groups.FirstOrDefault(x => x.ProfileGroupID == grp.ProfileGroupID).Name
                                    });
                                }
                            }
                        }
                        obj.DeletedPeople = deleted;
                    }
                    obj.Success = String.Empty;
                    break;

                case BaseActionType.Delete:

                    obj.Current.DeleteUserID = obj.LoggedUser.Id;
                    obj.Current.DeletedDate  = DateTime.Now;
                    obj.Current.Status       = StatusEnum.Deleted;

                    db.Entry(obj.Current).State = EntityState.Modified;
                    LogService.InsertUserLogs(OperationLog.UserDelete, db, obj.Current.Id, obj.Current.DeleteUserID, obj.CurrentOrganization.OrganizationID);

                    db.SaveChanges();

                    var current = obj.People.FirstOrDefault(x => x.Id == obj.Current.Id);
                    if (current != null)
                    {
                        obj.People.Remove(current);
                        obj.DeletedPeople.Add(obj.Current);
                    }

                    obj.Current = new Person();

                    obj.Success = "Dane usuniete!";
                    break;

                case BaseActionType.Edit:


                    obj.Current.ModifiedUserID  = obj.LoggedUser.Id;
                    db.Entry(obj.Current).State = EntityState.Modified;

                    LogService.InsertUserLogs(OperationLog.UserEdit, db, obj.Current.Id, obj.Current.ModifiedUserID, obj.CurrentOrganization.OrganizationID);

                    db.SaveChanges();
                    obj.Success = "Dane zapisane!";
                    break;

                case BaseActionType.GetSimple:

                    obj.People = (from p in db.Users
                                  where p.OrganizationID == obj.CurrentOrganization.OrganizationID && p.Status == StatusEnum.Active &&
                                  (p.Profile == ProfileEnum.User || p.Profile == ProfileEnum.Creator || p.Profile == ProfileEnum.Administrator || p.Profile == ProfileEnum.Manager)
                                  orderby p.RegistrationDate
                                  select p).ToList();
                    break;

                case BaseActionType.GetSpecial:

                    take = 20;
                    skip = 0;

                    if (obj.People != null)
                    {
                        skip = obj.People.Count();
                    }


                    var collection = (from p in db.Users
                                      where p.OrganizationID == obj.CurrentOrganization.OrganizationID &&
                                      (p.Status == StatusEnum.Active || p.Status == StatusEnum.Blocked) &&
                                      (p.Profile == ProfileEnum.User || p.Profile == ProfileEnum.Creator || p.Profile == ProfileEnum.Administrator || p.Profile == ProfileEnum.Manager)
                                      orderby p.RegistrationDate
                                      select p).Skip(skip).Take(take).ToList();

                    var groupsEx = (from gio in db.Groups
                                    join g in db.GroupsInOrganizations on gio.ProfileGroupID equals g.ProfileGroupID
                                    select gio).ToList();



                    foreach (var p in collection)
                    {
                        p.AssignedTrainings = (from t in db.TrainingResults
                                               join tr in db.Trainings on t.TrainingID equals tr.TrainingID
                                               where t.PersonID == p.Id
                                               orderby t.StartDate descending
                                               select new TrainingDto
                        {
                            Id = t.TrainingID,
                            StartDate = t.StartDate.Value,
                            EndDate = t.EndDate,
                            Result = t.Rating,
                            Name = tr.Name
                        }).ToList();

                        var assignedGroups = (from pg in db.PeopleInGroups
                                              where pg.PersonID == p.Id
                                              select pg).ToList();

                        if (assignedGroups != null)
                        {
                            p.AssignedGroups = new List <ProfileGroup2Person>();
                            foreach (var grp in assignedGroups)
                            {
                                p.AssignedGroups.Add(new ProfileGroup2Person()
                                {
                                    ProfileGroupID = grp.ProfileGroupID,
                                    GroupName      = groupsEx.FirstOrDefault(x => x.ProfileGroupID == grp.ProfileGroupID).Name
                                });
                            }
                        }
                    }


                    obj.People.AddRange(collection);

                    obj.Success = "";

                    break;

                case BaseActionType.GetExtData:

                    if (obj.Current == null)
                    {
                        obj.ErrorMessage = "Nie wybrano uzytkowanika";
                        return(Request.CreateResponse(HttpStatusCode.Created, obj));
                    }

                    take = 5;
                    skip = 0;

                    if (obj.Current.AssignedTrainings != null)
                    {
                        skip = obj.Current.AssignedTrainings.Count();
                    }
                    else
                    {
                        obj.Current.AssignedTrainings = new List <TrainingDto>();
                    }


                    var trainingsEx = (from t in db.TrainingResults
                                       join tr in db.Trainings on t.TrainingID equals tr.TrainingID
                                       where t.PersonID == obj.Current.Id
                                       orderby t.StartDate descending
                                       select new TrainingDto
                    {
                        Id = t.TrainingID,
                        StartDate = t.StartDate.Value,
                        EndDate = t.EndDate,
                        Result = t.Rating,
                        Name = tr.Name
                    }).Skip(skip).Take(take);

                    if (trainingsEx != null && trainingsEx.Any())
                    {
                        obj.Current.AssignedTrainings.AddRange(trainingsEx.ToList());
                    }

                    obj.Success = "";

                    break;

                default:
                    break;
                }


                return(Request.CreateResponse(HttpStatusCode.Created, obj));
            }
            catch (Exception ex)
            {
                obj.ErrorMessage = ex.Message;
                return(Request.CreateResponse(HttpStatusCode.ExpectationFailed, obj));
            }
        }