Esempio n. 1
0
 public Entity.ActionStatus Delete(Guid id)
 {
     try
     {
         var dbHardwareKit = _hardwareKitRepository.GetByUniqueId(x => x.Guid == id);
         if (dbHardwareKit == null)
         {
             throw new NotFoundCustomException($"{CommonException.Name.NoRecordsFound} : HardwareKit");
         }
         dbHardwareKit.IsDeleted   = true;
         dbHardwareKit.UpdatedDate = DateTime.Now;
         dbHardwareKit.UpdatedBy   = component.helper.SolutionConfiguration.CurrentUserId;
         return(_hardwareKitRepository.Update(dbHardwareKit));
     }
     catch (Exception ex)
     {
         _logger.ErrorLog(ex, this.GetType().Name, MethodBase.GetCurrentMethod().Name);
         return(new Entity.ActionStatus
         {
             Success = false,
             Message = ex.Message
         });
     }
 }
 public Entity.ActionStatus Delete(Guid id)
 {
     try
     {
         var dbHardwareKit = _hardwareKitRepository.GetByUniqueId(x => x.Guid == id);
         if (dbHardwareKit == null)
         {
             throw new NotFoundCustomException($"{CommonException.Name.NoRecordsFound} : HardwareKit");
         }
         dbHardwareKit.IsDeleted   = true;
         dbHardwareKit.UpdatedDate = DateTime.Now;
         dbHardwareKit.UpdatedBy   = SolutionConfiguration.CurrentUserId;
         return(_hardwareKitRepository.Update(dbHardwareKit));
     }
     catch (Exception ex)
     {
         _logger.Error(Constants.ACTION_EXCEPTION, "HardwareKit.Delete " + ex);
         return(new Entity.ActionStatus
         {
             Success = false,
             Message = ex.Message
         });
     }
 }
Esempio n. 3
0
        public Entity.ActionStatus Manage(Entity.DeviceModel request)
        {
            Entity.ActionStatus actionStatus = new Entity.ActionStatus(true);
            try
            {
                var dbDevice = Mapper.Configuration.Mapper.Map <Entity.Device, Model.Device>(request);
                if (request.Guid == null || request.Guid == Guid.Empty)
                {
                    ////provision kit with kitcode and unique id
                    var kitDeviceList = _deviceRepository.ProvisionKit(new ProvisionKitRequest {
                        DeviceGuid = new Guid(), KitCode = request.KitCode, UniqueId = request.UniqueId
                    });
                    if (kitDeviceList != null && kitDeviceList.Data != null && kitDeviceList.Data.Any())
                    {
                        string templateGuid = _lookupService.GetIotTemplateGuidByName(kitDeviceList.Data.FirstOrDefault().TemplateName);
                        if (!string.IsNullOrEmpty(templateGuid))
                        {
                            request.TemplateGuid = new Guid(templateGuid);
                            request.CompanyGuid  = SolutionConfiguration.CompanyId;

                            var addDeviceResult = _iotConnectClient.Device.Add(Mapper.Configuration.Mapper.Map <IOT.AddDeviceModel>(request)).Result;
                            //
                            if (addDeviceResult != null && addDeviceResult.status && addDeviceResult.data != null)
                            {
                                request.Guid = Guid.Parse(addDeviceResult.data.newid.ToUpper());
                                IOT.DataResponse <IOT.AcquireDeviceResult> acquireResult = _iotConnectClient.Device.AcquireDevice(request.UniqueId, new IOT.AcquireDeviceModel()).Result;
                                if (request.ImageFile != null)
                                {
                                    // upload image
                                    dbDevice.Image = SaveDeviceImage(request.Guid.Value, request.ImageFile);
                                }
                                dbDevice.Guid          = request.Guid.Value;
                                dbDevice.IsProvisioned = acquireResult.status;
                                dbDevice.IsActive      = true;
                                dbDevice.CompanyGuid   = SolutionConfiguration.CompanyId;
                                dbDevice.CreatedDate   = DateTime.Now;
                                dbDevice.CreatedBy     = SolutionConfiguration.CurrentUserId;
                                actionStatus           = _deviceRepository.Manage(dbDevice);
                                actionStatus.Data      = (Guid)(actionStatus.Data);
                                if (!actionStatus.Success)
                                {
                                    _logger.ErrorLog(new Exception($"Device is not added in solution database, Error: {actionStatus.Message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                                    var deleteEntityResult = _iotConnectClient.Device.Delete(request.Guid.Value.ToString()).Result;
                                    if (deleteEntityResult != null && deleteEntityResult.status)
                                    {
                                        _logger.ErrorLog(new Exception($"Device is not deleted from iotconnect"), this.GetType().Name, MethodBase.GetCurrentMethod().Name);

                                        actionStatus.Success = false;
                                        actionStatus.Message = new UtilityHelper().IOTResultMessage(deleteEntityResult.errorMessages);
                                    }
                                }
                                else
                                {
                                    //Update companyid in hardware kit
                                    var hardwareKit = _hardwareKitRepository.GetByUniqueId(t => t.KitCode == request.KitCode && t.UniqueId == request.UniqueId);
                                    if (hardwareKit != null)
                                    {
                                        hardwareKit.CompanyGuid = SolutionConfiguration.CompanyId;
                                        _hardwareKitRepository.Update(hardwareKit);
                                    }
                                }
                            }
                            else
                            {
                                actionStatus.Data    = Guid.Empty;
                                actionStatus.Success = false;
                                actionStatus.Message = new UtilityHelper().IOTResultMessage(addDeviceResult.errorMessages);
                            }
                        }
                        else
                        {
                            actionStatus.Success = false;
                            actionStatus.Data    = false;
                            actionStatus.Message = "Unable To Locate Kit Type.";
                        }
                    }
                    else
                    {
                        _logger.ErrorLog(new Exception($"Device KitCode or UniqueId is not valid"), this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                        actionStatus.Data    = Guid.Empty;
                        actionStatus.Success = false;
                        actionStatus.Message = "Device KitCode or UniqueId is not valid!";
                    }
                }
                else
                {
                    var olddbDevice = _deviceRepository.FindBy(x => x.Guid.Equals(request.Guid)).FirstOrDefault();
                    if (olddbDevice == null)
                    {
                        throw new NotFoundCustomException($"{CommonException.Name.NoRecordsFound} : Device");
                    }
                    var updateEntityResult = _iotConnectClient.Device.Update(request.Guid.ToString(), Mapper.Configuration.Mapper.Map <IOT.UpdateDeviceModel>(request)).Result;
                    if (updateEntityResult != null && updateEntityResult.status)
                    {
                        if (request.ImageFile != null)
                        {
                            if (File.Exists(SolutionConfiguration.UploadBasePath + dbDevice.Image) && request.ImageFile.Length > 0)
                            {
                                //if already exists image then delete  old image from server
                                File.Delete(SolutionConfiguration.UploadBasePath + dbDevice.Image);
                            }
                            if (request.ImageFile.Length > 0)
                            {
                                // upload new image
                                dbDevice.Image = SaveDeviceImage(dbDevice.Guid, request.ImageFile);
                            }
                        }
                        else
                        {
                            dbDevice.Image = olddbDevice.Image;
                        }
                        dbDevice.CreatedDate  = olddbDevice.CreatedDate;
                        dbDevice.CreatedBy    = olddbDevice.CreatedBy;
                        dbDevice.UpdatedDate  = DateTime.Now;
                        dbDevice.UpdatedBy    = SolutionConfiguration.CurrentUserId;
                        dbDevice.CompanyGuid  = SolutionConfiguration.CompanyId;
                        dbDevice.TemplateGuid = olddbDevice.TemplateGuid;
                        actionStatus          = _deviceRepository.Manage(dbDevice);
                        actionStatus.Data     = (Guid)(actionStatus.Data);
                        if (!actionStatus.Success)
                        {
                            _logger.ErrorLog(new Exception($"Device is not updated in solution database, Error: {actionStatus.Message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                            actionStatus.Success = false;
                            actionStatus.Message = "Something Went Wrong!";
                        }
                    }
                    else
                    {
                        _logger.ErrorLog(new Exception($"Device is not updated in iotconnect, Error: {updateEntityResult.message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                        actionStatus.Success = false;
                        actionStatus.Message = new UtilityHelper().IOTResultMessage(updateEntityResult.errorMessages);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.ErrorLog(ex, this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                return(new Entity.ActionStatus
                {
                    Success = false,
                    Message = ex.Message
                });
            }
            return(actionStatus);
        }
Esempio n. 4
0
 public Entity.BaseResponse <bool> ProvisionKit(Entity.Device request)
 {
     Entity.BaseResponse <bool> result = new Entity.BaseResponse <bool>(true);
     try
     {
         var repoResult = _deviceRepository.ProvisionKit(new ProvisionKitRequest {
             DeviceGuid = new Guid(), KitCode = request.KitCode, UniqueId = request.UniqueId
         });
         if (repoResult != null && repoResult.Data != null && repoResult.Data.Any())
         {
             Entity.HardwareKit device          = repoResult.Data.OrderBy(d => d.KitCode == request.KitCode && d.UniqueId == request.UniqueId).FirstOrDefault();
             IOT.AddDeviceModel iotDeviceDetail = new IOT.AddDeviceModel()
             {
                 DisplayName = device.Name,
                 //entityGuid = request.DeviceGuid.ToString(),
                 uniqueId           = device.UniqueId,
                 deviceTemplateGuid = device.TemplateGuid.ToString(),
                 note       = device.Note,
                 tag        = device.Tag,
                 properties = new List <IOT.AddProperties>()
             };
             var addDeviceResult = _iotConnectClient.Device.Add(iotDeviceDetail).Result;
             if (addDeviceResult != null && addDeviceResult.status && addDeviceResult.data != null)
             {
                 Guid newDeviceId = Guid.Parse(addDeviceResult.data.newid.ToUpper());
                 IOT.DataResponse <IOT.AcquireDeviceResult> acquireResult = _iotConnectClient.Device.AcquireDevice(request.UniqueId, new IOT.AcquireDeviceModel()).Result;
                 Entity.ActionStatus actionStatus = _deviceRepository.Manage(new Model.Device()
                 {
                     Guid             = newDeviceId,
                     CompanyGuid      = SolutionConfiguration.CompanyId,
                     Description      = request.Description,
                     EntityGuid       = new Guid(request.EntityGuid.ToString()),
                     Specification    = request.Specification,
                     TemplateGuid     = device.TemplateGuid.Value,
                     ParentDeviceGuid = null,
                     TypeGuid         = request.TypeGuid,
                     UniqueId         = request.UniqueId,
                     Name             = request.Name,
                     Note             = request.Note,
                     Tag           = request.Tag,
                     IsProvisioned = acquireResult.status,
                     IsActive      = request.IsActive,
                     IsDeleted     = false,
                     CreatedDate   = DateTime.UtcNow,
                     CreatedBy     = SolutionConfiguration.CurrentUserId
                 });
                 if (!actionStatus.Success)
                 {
                     _logger.ErrorLog(new Exception($"Device is not added in solution database, Error: {actionStatus.Message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                     var deleteEntityResult = _iotConnectClient.Device.Delete(newDeviceId.ToString()).Result;
                     if (deleteEntityResult != null && deleteEntityResult.status)
                     {
                         _logger.ErrorLog(new Exception($"Device is not deleted from iotconnect"), this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                         actionStatus.Success = false;
                         actionStatus.Message = new UtilityHelper().IOTResultMessage(deleteEntityResult.errorMessages);
                     }
                 }
                 else
                 {
                     //Update companyid in hardware kit
                     var hardwareKit = _hardwareKitRepository.GetByUniqueId(t => t.KitCode == request.KitCode && t.UniqueId == request.UniqueId);
                     if (hardwareKit != null)
                     {
                         hardwareKit.CompanyGuid = SolutionConfiguration.CompanyId;
                         _hardwareKitRepository.Update(hardwareKit);
                     }
                     result.IsSuccess = true;
                 }
             }
             else
             {
                 _logger.ErrorLog(new Exception($"Kit is not added in iotconnect, Error: {addDeviceResult.message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                 result.IsSuccess = false;
                 result.Message   = new UtilityHelper().IOTResultMessage(addDeviceResult.errorMessages);
             }
         }
         else
         {
             return(new Entity.BaseResponse <bool>(false, repoResult.Message));
         }
     }
     catch (Exception ex)
     {
         _logger.ErrorLog(ex, this.GetType().Name, MethodBase.GetCurrentMethod().Name);
         return(null);
     }
     return(result);
 }
Esempio n. 5
0
        public Entity.BaseResponse <bool> ProvisionKit(Entity.ProvisionKitRequest request)
        {
            Entity.BaseResponse <bool> result = new Entity.BaseResponse <bool>(true);
            try
            {
                Entity.BaseResponse <List <Entity.KitDevice> > kitDeviceList = _deviceRepository.ProvisionKit(request);

                if (kitDeviceList != null && kitDeviceList.Data != null && kitDeviceList.Data.Any())
                {
                    List <Entity.KitDevice> deviceList = kitDeviceList.Data.OrderBy(d => d.ParentDeviceGuid.HasValue).ToList();
                    string templateGuid = _lookupService.GetIotTemplateGuidByName(deviceList.FirstOrDefault().TemplateName);

                    if (!string.IsNullOrEmpty(templateGuid))
                    {
                        List <Model.Device> lstAddedDevice = new List <Model.Device>();
                        bool IsDeviceAdded = true;
                        foreach (var device in deviceList)
                        {
                            string tagName = string.Empty;
                            if (device.ParentDeviceGuid.HasValue)
                            {
                                var kitType = _kitTypeAttributeRepository.FindBy(t => t.Guid == device.TagGuid).FirstOrDefault();
                                if (kitType != null)
                                {
                                    tagName = kitType.Tag.ToString();
                                }
                                else
                                {
                                    throw new Exception("Device tag is not exists in solution.");
                                }
                            }

                            IOT.AddDeviceModel iotDeviceDetail = new IOT.AddDeviceModel()
                            {
                                DisplayName        = device.Name,
                                entityGuid         = request.GreenHouseGuid.ToString(),
                                uniqueId           = device.UniqueId,
                                deviceTemplateGuid = templateGuid,// device.TemplateGuid.ToString(),
                                parentDeviceGuid   = device.ParentDeviceGuid.ToString(),
                                note       = device.Note,
                                tag        = tagName,//device.Tag,
                                properties = new List <IOT.AddProperties>()
                            };
                            var addDeviceResult = _iotConnectClient.Device.Add(iotDeviceDetail).Result;
                            if (addDeviceResult != null && addDeviceResult.status && addDeviceResult.data != null)
                            {
                                Guid newDeviceId = Guid.Parse(addDeviceResult.data.newid.ToUpper());
                                IOT.DataResponse <IOT.AcquireDeviceResult> acquireResult = _iotConnectClient.Device.AcquireDevice(device.UniqueId, new IOT.AcquireDeviceModel()).Result;
                                var intUpdated = deviceList.Where(d => d.ParentDeviceGuid == device.Guid).Select(d => d.ParentDeviceGuid = newDeviceId).Count();

                                lstAddedDevice.Add(new Model.Device()
                                {
                                    Guid             = newDeviceId,
                                    CompanyGuid      = SolutionConfiguration.CompanyId,
                                    GreenHouseGuid   = request.GreenHouseGuid,
                                    TemplateGuid     = device.TemplateGuid,
                                    ParentDeviceGuid = device.ParentDeviceGuid,
                                    Type             = null,
                                    UniqueId         = device.UniqueId,
                                    Name             = device.Name,
                                    Note             = device.Note,
                                    Tag           = tagName,//device.Tag,
                                    IsProvisioned = acquireResult.status,
                                    IsActive      = true,
                                    IsDeleted     = false,
                                    CreatedDate   = DateTime.UtcNow,
                                    CreatedBy     = SolutionConfiguration.CurrentUserId
                                });
                            }
                            else
                            {
                                IsDeviceAdded = false;
                                _logger.ErrorLog(new Exception($"Kit is not added in iotconnect, Error: {addDeviceResult.message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                                result.IsSuccess = false;
                                result.Message   = new UtilityHelper().IOTResultMessage(addDeviceResult.errorMessages);
                                break;
                            }
                        }

                        if (IsDeviceAdded && lstAddedDevice != null && lstAddedDevice.Any())
                        {
                            foreach (var device in lstAddedDevice)
                            {
                                Entity.ActionStatus actionStatus = _deviceRepository.Manage(device);
                                if (!actionStatus.Success)
                                {
                                    _logger.ErrorLog(new Exception($"Device is not added in solution database, Error: {actionStatus.Message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                                    var deleteEntityResult = _iotConnectClient.Device.Delete(device.Guid.ToString()).Result;
                                    if (deleteEntityResult != null && deleteEntityResult.status)
                                    {
                                        _logger.ErrorLog(new Exception($"Device is not deleted from iotconnect"), this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                                        actionStatus.Success = false;
                                        actionStatus.Message = "Something Went Wrong!";
                                    }
                                }
                            }
                        }

                        if (result.IsSuccess)
                        {
                            result.Message = "Kit Added Successfully!";
                            //Update companyid in hardware kit
                            var hardwareKit = _hardwareKitRepository.GetByUniqueId(t => t.KitCode == request.KitCode);
                            if (hardwareKit != null)
                            {
                                hardwareKit.CompanyGuid = SolutionConfiguration.CompanyId;
                                _hardwareKitRepository.Update(hardwareKit);
                            }
                        }
                    }
                    else
                    {
                        result.IsSuccess = false;
                        result.Data      = false;
                        result.Message   = "Unable To Locate Kit Type.";
                    }
                }
                else
                {
                    result.IsSuccess = false;
                    result.Data      = false;
                    result.Message   = "Invalid Kit Details.Please Correct It!";
                }
            }
            catch (Exception ex)
            {
                _logger.ErrorLog(ex, this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                return(null);
            }
            return(result);
        }