public Entity.BaseResponse <Guid> Manage([FromForm] Entity.GeneratorModel request)
 {
     Entity.BaseResponse <Guid> response = new Entity.BaseResponse <Guid>(true);
     try
     {
         var status = _service.Manage(request);
         response.IsSuccess = status.Success;
         response.Message   = status.Message;
         response.Data      = status.Data;
     }
     catch (Exception ex)
     {
         base.LogException(ex);
         return(new Entity.BaseResponse <Guid>(false, ex.Message));
     }
     return(response);
 }
Exemple #2
0
        public Entity.ActionStatus Manage(Entity.GeneratorModel request)
        {
            Entity.ActionStatus actionStatus = new Entity.ActionStatus(true);
            try
            {
                var dbGenerator = Mapper.Configuration.Mapper.Map <Entity.Generator, Model.Generator>(request);
                if (request.Guid == null || request.Guid == Guid.Empty)
                {
                    ////provision kit with kitcode and unique id
                    var kitDeviceList = _generatorRepository.ProvisionKit(new ProvisionKitRequest {
                        GeneratorGuid = 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);
                            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
                                    dbGenerator.Image = SaveGeneratorImage(request.Guid.Value, request.ImageFile);
                                }
                                dbGenerator.Guid          = request.Guid.Value;
                                dbGenerator.IsProvisioned = acquireResult.status;
                                dbGenerator.IsActive      = true;
                                dbGenerator.CompanyGuid   = SolutionConfiguration.CompanyId;
                                dbGenerator.CreatedDate   = DateTime.Now;
                                dbGenerator.CreatedBy     = SolutionConfiguration.CurrentUserId;
                                actionStatus      = _generatorRepository.Manage(dbGenerator);
                                actionStatus.Data = (Guid)(actionStatus.Data);
                                if (!actionStatus.Success)
                                {
                                    _logger.ErrorLog(new Exception($"Generator 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($"Generator is not deleted from iotconnect, Error: {actionStatus.Message}")
                                                         , 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    = Guid.Empty;
                            actionStatus.Message = "Unable To Locate Kit Type.";
                        }
                    }
                    else
                    {
                        _logger.InfoLog($"Generator KitCode or UniqueId is not valid");
                        actionStatus.Data    = Guid.Empty;
                        actionStatus.Success = false;
                        actionStatus.Message = "Generator KitCode or UniqueId is not valid!";
                    }
                }
                else
                {
                    var olddbDevice = _generatorRepository.FindBy(x => x.Guid.Equals(request.Guid)).FirstOrDefault();
                    if (olddbDevice == null)
                    {
                        throw new NotFoundCustomException($"{CommonException.Name.NoRecordsFound} : Generator");
                    }

                    var updateDeviceResult = _iotConnectClient.Device.Update(request.Guid.ToString(), Mapper.Configuration.Mapper.Map <IOT.UpdateDeviceModel>(request)).Result;
                    if (updateDeviceResult != null && updateDeviceResult.status)
                    {
                        string existingImage = olddbDevice.Image;
                        if (request.ImageFile != null)
                        {
                            if (File.Exists(SolutionConfiguration.UploadBasePath + dbGenerator.Image) && request.ImageFile.Length > 0)
                            {
                                //if already exists image then delete  old image from server
                                File.Delete(SolutionConfiguration.UploadBasePath + dbGenerator.Image);
                            }
                            if (request.ImageFile.Length > 0)
                            {
                                // upload new image
                                dbGenerator.Image = SaveGeneratorImage(dbGenerator.Guid, request.ImageFile);
                            }
                        }
                        else
                        {
                            dbGenerator.Image = existingImage;
                        }
                        dbGenerator.CreatedDate  = olddbDevice.CreatedDate;
                        dbGenerator.CreatedBy    = olddbDevice.CreatedBy;
                        dbGenerator.UpdatedDate  = DateTime.Now;
                        dbGenerator.UpdatedBy    = SolutionConfiguration.CurrentUserId;
                        dbGenerator.CompanyGuid  = SolutionConfiguration.CompanyId;
                        dbGenerator.TemplateGuid = olddbDevice.TemplateGuid;
                        actionStatus             = _generatorRepository.Manage(dbGenerator);
                        actionStatus.Data        = (Guid)(actionStatus.Data);
                        if (!actionStatus.Success)
                        {
                            _logger.ErrorLog(new Exception($"Generator 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($"Generator is not updated in iotconnect, Error: {actionStatus.Message}")
                                         , this.GetType().Name, MethodBase.GetCurrentMethod().Name);
                        actionStatus.Success = false;
                        actionStatus.Message = new UtilityHelper().IOTResultMessage(updateDeviceResult.errorMessages);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.InfoLog(Constants.ACTION_EXCEPTION, "GeneratorService.Manage " + ex);
                return(new Entity.ActionStatus
                {
                    Success = false,
                    Message = ex.Message
                });
            }
            return(actionStatus);
        }