public IHttpActionResult Put([FromBody] FarmDto value)
        {
            if (!ModelState.IsValid)
            {
                Logger.Info("Farm modelstate invalid {@value1}", value);
                return(BadRequest(ModelState));
            }

            try
            {
                var farm = db.Farms.Find(value.ID);
                if (farm != null)
                {
                    Farm updatedFarm = Mapper.Map <Farm>(value);
                    db.Entry(farm).CurrentValues.SetValues(updatedFarm);
                    db.SaveChanges();

                    Logger.Info("Farm Updated: {@value1}", updatedFarm);
                    return(StatusCode(HttpStatusCode.NoContent));
                }

                Logger.Info("Farm data for {id} not found", value.ID);
                return(NotFound());
            }
            catch (Exception ex)
            {
                Logger.Error(ex, ex.Message);
                return(InternalServerError(ex));
            }
        }
        public void WHEN_Convert_GIVEN_Valid_Dto_THEN_Get_Valid_Result_With_All_Links()
        {
            var uniqueIdFactory = SampleObjectsIdFactory.Instance;
            var farmDto         = new FarmDto {
                Uid = Guid.NewGuid(), GrowerUid = Guid.NewGuid(), Name = "Test"
            };

            var converter = new FarmDtoConverter(uniqueIdFactory);
            var farm      = converter.Convert(farmDto);

            Assert.Equal(farmDto.Uid.ToString(), farm.Object.Id.UniqueIds.First().Id);
            Assert.Equal(farmDto.Name, farm.Object.Description);

            var selfLink = farm.Links.Single(l => l.Rel == Relationships.Self);

            Assert.Equal($"/Farms/{uniqueIdFactory.UniqueIdSource}/{farmDto.Uid}", selfLink.Link);
            Assert.Equal(selfLink.Id.ReferenceId, farm.Object.Id.ReferenceId);

            var growerLink = farm.Links.Single(l => l.Rel == typeof(Grower).ObjectRel());

            Assert.Equal($"/Growers/{uniqueIdFactory.UniqueIdSource}/{farmDto.GrowerUid}", growerLink.Link);

            var fieldsLink = farm.Links.Single(l => l.Rel == typeof(Field).ListRel());

            Assert.Equal($"/Farms/{uniqueIdFactory.UniqueIdSource}/{farmDto.Uid}/Fields", fieldsLink.Link);
        }
Exemple #3
0
        public FarmDto Create(FarmDto dto)
        {
            var farm = Mapper.Map <FarmDto, Farm>(dto);

            _farmRepository.Create(farm);

            return(Mapper.Map <Farm, FarmDto>(_farmRepository.FindById(farm.Id)));
        }
Exemple #4
0
 private void CboDestino_SelectedValueChanged(object sender, EventArgs e)
 {
     if (cboDestino.SelectedItem != null)
     {
         destinoSelected = (FarmDto)cboDestino.SelectedItem;
     }
     else
     {
         destinoSelected = null;
     }
 }
Exemple #5
0
 private void CboOrigen_SelectedValueChanged(object sender, EventArgs e)
 {
     if (cboOrigen.SelectedItem != null)
     {
         origenSelected = (FarmDto)cboOrigen.SelectedItem;
     }
     else
     {
         origenSelected = null;
     }
 }
Exemple #6
0
 public async Task <IHttpActionResult> GetByUser(string userId)
 {
     return(await ResultFactory.Create(ModelState, async arg =>
     {
         var companyUser = await companyUserService.GetBySysUserIdAsync(userId);
         FarmDto farm = null;
         if (companyUser != null)
         {
             farm = await farmService.GetByIdWithRedisAsync(companyUser.FarmSerialnum);
         }
         return new ApiResult(ExceptionCode.Success, "", farm);
     }, userId, "success", "请检查请求参数"));
 }
Exemple #7
0
        public ModelEnvelope <Farm> Convert(FarmDto farmDto)
        {
            var farm = new Farm()
            {
                Description = farmDto.Name
            };

            var farmUniqueId   = _uniqueIdFactory.CreateGuid(farmDto.Uid);
            var farmCompoundId = farm.Id;

            farmCompoundId.UniqueIds.Add(farmUniqueId);

            var selfLink = new ReferenceLink
            {
                Id   = farmCompoundId,
                Rel  = Relationships.Self,
                Link = $"/Farms/{farmUniqueId.Source}/{farmUniqueId.Id}",
                Type = "get"
            };

            var growerUniqueId   = _uniqueIdFactory.CreateGuid(farmDto.GrowerUid);
            var growerCompoundId = growerUniqueId.ToCompoundIdentifier();

            farm.GrowerId = growerCompoundId.ReferenceId;
            var growerLink = new ReferenceLink
            {
                Id   = growerCompoundId,
                Rel  = typeof(Grower).ObjectRel(),
                Link = $"/Growers/{growerUniqueId.Source}/{growerUniqueId.Id}",
                Type = "get"
            };

            var fieldsLink = new ReferenceLink
            {
                Rel  = typeof(Field).ListRel(),
                Link = $"/Farms/{farmUniqueId.Source}/{farmUniqueId.Id}/Fields",
                Type = "get"
            };

            var farmEnvelope = new ModelEnvelope <Farm>(farm);

            farmEnvelope.Links.Add(growerLink);
            farmEnvelope.Links.Add(selfLink);
            farmEnvelope.Links.Add(fieldsLink);

            return(farmEnvelope);
        }
        public IHttpActionResult Post([FromBody] FarmDto value)
        {
            if (!ModelState.IsValid)
            {
                Logger.Info("Farm modelstate invalid {@value1}", value);
                return(BadRequest(ModelState));
            }

            try
            {
                Farm farm = Mapper.Map <Farm>(value);
                db.Farms.Add(farm);
                db.SaveChanges();
                Logger.Info("Farm {id} created successfully", farm.ID);

                return(StatusCode(HttpStatusCode.NoContent));
            }
            catch (DbEntityValidationException eve)
            {
                List <String> errors = new List <string>();

                foreach (DbEntityValidationResult vr in eve.EntityValidationErrors)
                {
                    foreach (DbValidationError ve in vr.ValidationErrors)
                    {
                        string error = $"{vr.Entry.Entity.GetType().Name}.{ve.PropertyName}: {ve.ErrorMessage}";

                        if (!errors.Contains(error))
                        {
                            errors.Add(error);
                        }
                    }
                }

                Logger.Error(eve, eve.Message);
                return(InternalServerError(new InvalidOperationException(eve.Message + "\r\n" + String.Join("\r\n", errors.ToArray()), eve)));
            }
            catch (Exception ex)
            {
                Logger.Error(ex, ex.Message);
                return(InternalServerError(ex));
            }
        }
Exemple #9
0
        public async Task <HttpResponseMessage> UploadFarm(FarmDto farm, bool isNew)
        {
            if (isNew)
            {
                var cts  = new CancellationTokenSource();
                var task = RemoteRequestAsync(_farmApi.GetApi(Priority.UserInitiated).CreateFarm(farm), null);
                _runningTasks.Add(task.Id, cts);

                return(await task);
            }
            else
            {
                var cts  = new CancellationTokenSource();
                var task = RemoteRequestAsync(_farmApi.GetApi(Priority.UserInitiated).UpdateFarm(farm), null);
                _runningTasks.Add(task.Id, cts);

                return(await task);
            }
        }
Exemple #10
0
 private void cboSubFarm_SelectedValueChanged(object sender, EventArgs e)
 {
     if (cboSubFarm.SelectedItem != null)
     {
         SubFarmSelected = (FarmDto)cboSubFarm.SelectedItem;
         if (SubFarmSelected.CodFarm != "" && SubFarmSelected.FullName != "")
         {
             txtDireccionGd.Text = SubFarmSelected.DireccionGd;
         }
         else
         {
             txtDireccionGd.Text = "";
         }
     }
     else
     {
         cboFarm.ValueMember   = "CodFarm";
         cboFarm.DisplayMember = "FullName";
         cboFarm.DataSource    = null;
     }
 }
        public async Task <IHttpActionResult> RegisterIotUser([FromBody] UserRegisterIotModel user)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var result = await SysUserService.AddAsync(new SysUserDto()
                    {
                        LoginName              = user.LoginName,
                        UserName               = user.Name,
                        Password               = user.Password,
                        Email                  = user.Email,
                        SysRoleSerialnum       = user.RoleCode,
                        SysDepartmentSerialnum = user.DepartmentCode,
                        Status                 = 0,
                        CreateTime             = DateTime.Now
                    });

                    if (result > 0)
                    {
                        //添加企业
                        var company = new CompanyDto
                        {
                            Serialnum              = user.DepartmentCode + "", //todo 生成企业编码
                            Name                   = user.CompanyName,
                            Addr                   = user.Location,
                            Status                 = 0,
                            CreateTime             = DateTime.Now,
                            SysDepartmentSerialnum = user.DepartmentCode,
                            ContactMan             = user.Name,
                            ContactPhone           = user.Mobile
                        };

                        var companyInsertResult = await CompanyService.AddAsync(company);

                        if (companyInsertResult > 0)
                        {
                            //添加基地
                            var farm = new FarmDto();
                            farm.Serialnum              = company.Serialnum;
                            farm.APIKey                 = Guid.NewGuid().ToString();
                            farm.UploadPassword         = "******"; //上传密码应随机生成
                            farm.Name                   = company.Name + "-默认基地";
                            farm.CompanySerialnum       = company.Serialnum;
                            farm.Address                = company.Addr;
                            farm.ContactMan             = user.Name;
                            farm.ContactPhone           = user.Mobile;
                            farm.Status                 = false;
                            farm.SysDepartmentSerialnum = user.DepartmentCode;

                            await FarmService.AddAsync(farm);
                        }
                        else
                        {
                            ModelState.AddModelError("farm", "默认基地生成失败");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("company", "企业添加失败");
                    }
                }
                catch (AggregateException ex)
                {
                    if (ex.InnerExceptions.Any())
                    {
                        ex.InnerExceptions.ForEach(e => { ModelState.AddModelError(e.HResult.ToString(), e); });
                    }
                }
            }
            else
            {
                ModelState.AddModelError("user", "用户添加失败");
            }
            return(new ApiV1Result(ModelState.IsValid ? ResultMessageType.Success : ResultMessageType.InternalError,
                                   ModelState.ToString(), null));
        }
Exemple #12
0
 public static Farm Map(this FarmDto farmDto)
 {
     return(new Farm(farmDto.Id, farmDto.Name, farmDto.Cats?.Select(x => x.Map()).ToList()));
 }
Exemple #13
0
        public async Task <IHttpActionResult> RegisterIotUser([FromBody] UserRegisterIotModel user)
        {
            return(await ResultFactory.Create(ModelState, async arg =>
            {
                var result = await SysUserService.AddAsync(new SysUserDto()
                {
                    LoginName = user.LoginName,
                    UserName = user.Name,
                    Password = user.Password,
                    Email = user.Email,
                    SysRoleSerialnum = user.RoleCode,
                    SysDepartmentSerialnum = user.DepartmentCode,
                    Status = 0,
                    CreateTime = DateTime.Now,
                    UpdateTime = DateTime.Now
                });
                if (result > 0)
                {
                    //添加企业
                    var company = new CompanyDto
                    {
                        Serialnum = user.DepartmentCode + "",     //todo 生成企业编码
                        Name = user.CompanyName,
                        Addr = user.Location,
                        Status = 0,
                        CreateTime = DateTime.Now,
                        UpdateTime = DateTime.Now,
                        SysDepartmentSerialnum = user.DepartmentCode,
                        ContactMan = user.Name,
                        ContactPhone = user.Mobile
                    };

                    var companyInsertResult = await CompanyService.AddAsync(company);
                    if (companyInsertResult > 0)
                    {
                        //添加基地
                        var farm = new FarmDto();
                        farm.Serialnum = company.Serialnum;
                        farm.APIKey = Guid.NewGuid().ToString();
                        farm.UploadPassword = "******";     //上传密码应随机生成
                        farm.Name = company.Name + "-默认基地";
                        farm.CompanySerialnum = company.Serialnum;
                        farm.Address = company.Addr;
                        farm.ContactMan = user.Name;
                        farm.CreateTime = DateTime.Now;
                        farm.UpdateTime = DateTime.Now;
                        farm.ContactPhone = user.Mobile;
                        farm.Status = false;
                        farm.SysDepartmentSerialnum = user.DepartmentCode;

                        await FarmService.AddAsync(farm);
                    }
                    else
                    {
                        ModelState.AddModelError("farm", "默认基地生成失败");
                    }
                }
                else
                {
                    ModelState.AddModelError("company", "企业添加失败");
                }
                return true;
            }, user, "success", "请检查请求参数"));
        }
Exemple #14
0
 public ActionResult <FarmDto> Post([FromBody] FarmDto dto)
 {
     return(_farmService.Create(dto));
 }
Exemple #15
0
        public string Create([FromBody] FarmDto farmDto)
        {
            _farmService.Create(farmDto.Map());

            return("Created");
        }