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); } }