Example #1
0
        public override void ProcessRow(IList <object> row)
        {
            bool idExists = int.TryParse((string)row[IdIndex], out int id);

            if (idExists == false)
            {
                id = 0;
            }

            int    unitId   = Convert.ToInt32(row[UnitIdIndex]);
            string itemName = (string)row[ItemNameIndex];

            NutrientModel model = new NutrientModel()
            {
                Id       = id,
                UnitId   = unitId,
                ItemName = itemName
            };

            GlobalConfig.Connection.CreateNutrient(model);

            IList <object> updateRow = new object[]
            {
                model.Id,
                model.ItemName.ToString(),
                row[UnitNameIndex],
                model.UnitId
            };

            UpdateValues.Add(updateRow);
        }
Example #2
0
        public async Task <ActionResult <AdminPutResponse> > PutAdmin(AdminPutRequest request)
        {
            if (!(await checkToken(request.username, request.token)))
            {
                return(BadRequest());
            }

            AdminPutResponse result = new AdminPutResponse();

            using (var db = new NutrientContext())
            {
                NutrientModel model = await db.nutrients.FindAsync(request.id);

                if (model == null)
                {
                    return(NotFound());
                }
                DateTime dt = DateTime.Now;
                model.approval      = true;
                model.approvaled_at = dt;

                db.nutrients.Update(model);
                await db.SaveChangesAsync();

                result.token = await updateToken(request.username);
            }
            return(result);
        }
Example #3
0
        public Task UpdateNutrientAsync(NutrientModel model)
        {
            var uri     = UrisProvider.UpdateNutrient;
            var content = new UpdateNutrientModel(model.NutrientId, model.Title);

            return(this.httpClient.PutAsJsonAsync(uri, content));
        }
Example #4
0
        public static void WriteSoilData(Dictionary <string, object> parameters)
        {
            StringBuilder stringBuilder = new StringBuilder();
            string        folderPath    = (string)parameters["FolderPath"];

            int           rotationYear = Convert.ToInt32(parameters["RotationYear"]);
            ProductModel  crop         = (ProductModel)parameters["Crop"];
            string        farmName     = (string)parameters["FarmName"];
            NutrientModel nutrient     = (NutrientModel)parameters["Nutrient"];

            stringBuilder.Append(rotationYear);
            stringBuilder.Append(crop.ItemName);
            stringBuilder.Append(farmName);
            stringBuilder.AppendFormat(nutrient.ItemName);
            stringBuilder.Append(".xlsx");

            string outputFileName = stringBuilder.ToString();

            DirectoryInfo directory = new DirectoryInfo(folderPath);

            FileInfo newFile = FileOutputUtil.GetFileInfo(directory, outputFileName, deleteIfExists: true);

            string[] headers = new string[]
            {
                "FieldId",
                "Farm",
                "Field",
                "Acreage",
                "Nutrient",
                "Amount (lbm/ac)",
                "Goal (lbm/ac)",
                "Last Sampled",
                $"{rotationYear - 1} Crop",
                $"{rotationYear} Crop"
            };

            using (var package = new ExcelPackage(newFile))
            {
                var newSheet = package.Workbook.Worksheets.Add("Results");

                for (int i = 0; i < headers.Length; i++)
                {
                    newSheet.Cells[1, i + 1].Value = headers[i];
                }

                IList <FilteredFieldNutrientModel> models = GlobalConfig.Connection.GetFieldsNutrients_Filter(
                    farmName: farmName,
                    rotationYear: rotationYear,
                    nutrientId: nutrient.Id,
                    productId: crop.Id
                    );

                var newRange = newSheet.Cells["A2"].LoadFromCollection(models);

                newRange.AutoFitColumns();

                package.Save();
            }
        }
Example #5
0
        public void CreateNutrient(NutrientModel model)
        {
            var p = new DynamicParameters();

            p.Add("@QuantityName", model.ItemName);
            p.Add("@UnitId", model.UnitId);
            p.Add("@id", model.Id, dbType: DbType.Int32, direction: ParameterDirection.InputOutput);

            using (IDbConnection connection = new SqlConnection(GlobalConfig.CnnString(db)))
            {
                connection.Execute("dbo.spNutrients_Insert", p, commandType: CommandType.StoredProcedure);
            }
            model.Id = p.Get <int>("@id");
        }
Example #6
0
        private SoilSampleNutrientModel CreateSampleNutrientRecord(List <string> sample, string key)
        {
            int index = NutrientMappings[key];
            SoilSampleNutrientModel newNutrientRecord = new SoilSampleNutrientModel();

            newNutrientRecord.Amount         = null;
            newNutrientRecord.Recommendation = null;

            newNutrientRecord.NutrientId = Convert.ToInt32(key);

            NutrientModel nutrient = GlobalConfig.Connection.GetNutrient_ById(newNutrientRecord.NutrientId);


            if (sample[index] != "NULL")
            {
                newNutrientRecord.Amount = Convert.ToDecimal(sample[index]);

                string nutrientUnit = Units.Where <UnitModel>(unit => unit.Id == nutrient.UnitId).Select(unit => unit.Unit).First();

                //Makes sure it's a quantity that needs to be converted
                if (nutrientUnit != "None")
                {
                    newNutrientRecord.Amount *= SoilSampleNutrientModel.PPMConversionFactor;
                }
            }

            Regex recommendationRegex   = new Regex($"^{key}\\sRec\\s\\d");
            var   recommendationColumns = RecommendationMappings
                                          .Where(pair => recommendationRegex.IsMatch(pair.Key))
                                          .Select(pair => pair.Value);

            if (HasRecommendations(recommendationColumns))
            {
                decimal totalRec = recommendationColumns
                                   .Where(i => decimal.TryParse(sample[i], out decimal recommendation))
                                   .Select(i => decimal.Parse(sample[i]))
                                   .Sum();
                if (NotAllNull(sample, recommendationColumns))
                {
                    newNutrientRecord.Recommendation = totalRec;
                }
            }

            return(newNutrientRecord);
        }
Example #7
0
        public NutrientModel GetNutrient_ById(int nutrientId)
        {
            NutrientModel output = new NutrientModel();

            using (IDbConnection connection = new SqlConnection(GlobalConfig.CnnString(db)))
            {
                var p = new DynamicParameters();

                if (nutrientId > 0)
                {
                    p.Add("@NutrientId", nutrientId);

                    output = connection
                             .Query <NutrientModel>("spNutrients_GetById", p, commandType: CommandType.StoredProcedure).First();
                }
            }
            return(output);
        }
Example #8
0
        public async Task <ActionResult> PostNutrient(NutrientPostRequest item)
        {
            using (var db = new NutrientContext())
            {
                NutrientModel model = new NutrientModel();
                DateTime      dt    = DateTime.Now;
                model.name         = item.name;
                model.protein      = item.protein;
                model.lipid        = item.lipid;
                model.carbohydrate = item.carbohydrate;
                model.calorie      = item.calorie;
                model.created_at   = dt;
                model.updated_at   = dt;

                db.nutrients.Add(model);
                await db.SaveChangesAsync();
            }
            return(NoContent());
        }
Example #9
0
        public async Task <ActionResult <AdminDeleteResponse> > DeleteAdmin(AdminDeleteRequest request)
        {
            if (!(await checkToken(request.username, request.token)))
            {
                return(BadRequest());
            }

            AdminDeleteResponse result = new AdminDeleteResponse();

            using (var db = new NutrientContext())
            {
                NutrientModel model = await db.nutrients.FindAsync(request.id);

                if (model == null)
                {
                    return(NotFound());
                }
                db.nutrients.Remove(model);
                await db.SaveChangesAsync();

                result.token = await updateToken(request.username);
            }
            return(result);
        }
Example #10
0
 private async Task RefreshAsync()
 {
     this.model = await this.Service.GetNutrientAsync(Guid.Parse(this.NutrientId));
 }