public static async Task <DataResponse <Guid> > Put(ResourceModel model)
        {
            using (var db = BaseService.CreateSampleContext())
            {
                var response = new DataResponse <Guid>();
                var resource = db.Resources.Find(model.ResourceID);
                if (resource == null)
                {
                    response.AddError("ResourceID", "Resource not found");
                }

                var erros = response.GetErrorsFromModel(model).GetMessageFromErrors();
                if (erros != string.Empty)
                {
                    response.Message      = erros;
                    response.ResponseCode = 400;
                    return(response);
                }

                var session = await db.Sessions.Include(x => x.User)
                              .FirstOrDefaultAsync(u => u.SessionID == db.SessionID);

                var diff = model.Quantity - resource.Quantity;
                resource.Description = model.Description;
                resource.Observation = model.Observation;
                resource.Quantity    = model.Quantity;

                if (diff != 0)
                {
                    var moviment = new DataEntities.Moviment();
                    moviment.MovimentID     = Guid.NewGuid();
                    moviment.ResourceID     = model.ResourceID.Value;
                    moviment.UserID         = session.UserID;
                    moviment.MovimentTypeID = diff > 0 ? DataEntities.Enums.MovimentType.In : DataEntities.Enums.MovimentType.Out;
                    moviment.Quantity       = Math.Abs(diff);
                    await db.Moviments.AddAsync(moviment);
                }
                await db.SaveChangesAsync();

                response.Data         = resource.ResourceID;
                response.ResponseCode = 200;
                return(response);
            }
        }
        public static async Task <DataResponse <Guid> > Post(ResourceModel model)
        {
            using (var db = BaseService.CreateSampleContext())
            {
                var response = new DataResponse <Guid>();
                var erros    = response.GetErrorsFromModel(model).GetMessageFromErrors();
                if (erros != string.Empty)
                {
                    response.Message      = erros;
                    response.ResponseCode = 400;
                    return(response);
                }

                model.ResourceID = Guid.NewGuid();
                var sessao = await db.GetSession(db.SessionID.Value);

                var resource = new DataEntities.Resource();
                resource.ResourceID  = model.ResourceID.Value;
                resource.Description = model.Description;
                resource.Observation = model.Observation;
                resource.Quantity    = model.Quantity;

                var moviment = new DataEntities.Moviment();
                moviment.MovimentID     = Guid.NewGuid();
                moviment.ResourceID     = model.ResourceID.Value;
                moviment.UserID         = sessao.UserID;
                moviment.MovimentTypeID = DataEntities.Enums.MovimentType.In;
                moviment.Quantity       = model.Quantity;

                await db.Resources.AddAsync(resource);

                await db.Moviments.AddAsync(moviment);

                await db.SaveChangesAsync();

                response.Data         = resource.ResourceID;
                response.ResponseCode = 200;
                return(response);
            }
        }