예제 #1
0
        public Activity SaveOrUpdate(MNewActivity mActivity, Room room)
        {
            var activity = new Activity();

            if (mActivity.Id > 0)
            {
                activity = _uActivity.GetById(mActivity.Id);
            }

            activity.ExpirationDate = mActivity.ExpirationDate ?? room.ExpirationDate;
            activity.Title          = mActivity.Title;
            activity.Description    = mActivity.Description;
            activity.PersonId       = room.PersonId;
            activity.RoomId         = room.Id;
            activity.CurrentState   = (int)EActivityState.Building;
            activity.Weight         = mActivity.Weight;

            if (activity.Id > 0)
            {
                Update(activity);
            }
            else
            {
                Save(activity);
            }
            return(activity);
        }
예제 #2
0
        public IActionResult SaveActivity([FromBody] MNewActivity activity, string roomCode)
        {
            var authenticatedUserId = HttpContext.Session.GetSessionPersonId();
            var room = _uRoom.GetByCode(roomCode);

            if (room == null)
            {
                return(BadRequest(ResponseContent.Create(null, HttpStatusCode.BadRequest, $"A sala com código \"{roomCode}\" não existe!")));
            }

            if (room.Person.Id != authenticatedUserId)
            {
                return(StatusCode((int)HttpStatusCode.Unauthorized, ResponseContent.Create(null, HttpStatusCode.Unauthorized, "Você não tem acesso a essa sala!")));
            }

            if (room.CurrentState == (int)ERoomState.Closed)
            {
                return(BadRequest(ResponseContent.Create(null, HttpStatusCode.BadRequest, "Essa sala está fechada!")));
            }

            if (activity.ExpirationDate != null)
            {
                if (activity.ExpirationDate < DateTime.Now)
                {
                    return(BadRequest(ResponseContent.Create(null, HttpStatusCode.BadRequest, $"A data do fim da atividade deve ser maior que hoje, {DateTime.Now:dd/MM/yyyy}!")));
                }

                if (room.ExpirationDate != null && activity.ExpirationDate > room.ExpirationDate)
                {
                    return(BadRequest(ResponseContent.Create(null, HttpStatusCode.BadRequest, "A data de fim da atividade não pode ser maior que a data fim da sala!")));
                }
            }

            if (activity.Weight <= 0.0)
            {
                return(BadRequest(ResponseContent.Create(null, HttpStatusCode.BadRequest, "O peso da atividade deve ser um número maior que 0!")));
            }

            var roomActivities    = _uActivity.GetByRoom(room.Id);
            var sumRoomActivities = roomActivities.Sum(a => a.Weight);

            if (sumRoomActivities >= 100)
            {
                return(BadRequest(ResponseContent.Create(null, HttpStatusCode.BadRequest, "Não é possível adicionar mais atividades pois já está no limite de 100 pontos (100%)!")));
            }

            if (sumRoomActivities + activity.Weight > 100)
            {
                return(BadRequest(ResponseContent.Create(null, HttpStatusCode.BadRequest, $"O peso da atividade não pode ser maior que {100 - sumRoomActivities}, para não ultrapassar o limite da sala!")));
            }

            var bdActivity = _bActivity.SaveOrUpdate(activity, room);

            if (activity.Files != null)
            {
                var filesName = FileExtensions.CopyFromTo(activity.Files, _configuration["Directory:TEMP"], _configuration["Directory:UPLOAD"]);
                var documents = _bDocument.Save(filesName, bdActivity.Person);
                _bRelUploadActivity.DeactivateByActivity(activity.Id);
                _bRelUploadActivity.Save(documents, bdActivity);
            }

            var msgTypePastTense = activity.Id > 0 ? "editou" : "criou";
            var msgType          = activity.Id > 0 ? "editada" : "criada";

            _bHistory.SaveHistory(authenticatedUserId, $"Usuário {msgTypePastTense} atividade");

            return(Ok(ResponseContent.Create(bdActivity.Id, HttpStatusCode.Created, $"Atividade {msgType} com sucesso!")));
        }