public IHttpActionResult Put(string id, [FromBody] UpdateLicenseModel value) { try { if (_service.Update(id, value)) { return(Ok(id)); } } catch (Exception ex) { _logger.Log(NLog.LogLevel.Error, ex); return(BadRequestWithError(ApiErrorEnum.GeneralError)); } return(BadRequestWithError(ApiErrorEnum.LicenseUpdateFailed, string.Format("Cannot update license {0}.", id))); }
public UpdateLicenseModel ToUpdateDbModel(IUserService userService) { var result = new UpdateLicenseModel() { ValidTo = this.ValidTo, SubscribedTo = this.SubscribedTo, IsDemo = this.IsDemo, UserId = this.UserId.Value, Type = (LicenseTypeEnum)this.Type, Enabled = this.Enabled, IsActivated = this.IsActivated, ComputerCount = this.WorkstationsCount }; result.Modules = new List <LicenseModulesEnum>(); if (this.Accounting) { result.Modules.Add(LicenseModulesEnum.Accounting); } if (this.Warehouse) { result.Modules.Add(LicenseModulesEnum.Store); } if (this.Salary) { result.Modules.Add(LicenseModulesEnum.Payroll); } if (this.Schedules) { result.Modules.Add(LicenseModulesEnum.Schedule); } return(result); }
public bool Update(string id, UpdateLicenseModel model, long?userId = null) { using (var db = new LicenseDbEntities()) { var result = db.Licenses.FirstOrDefault(x => x.Id == new Guid(id)); if (result != null) { string beforeUpdate = Serialize(result); result.ValidTo = model.ValidTo ?? result.ValidTo; result.SubscribedTo = model.SubscribedTo ?? result.SubscribedTo; result.IsDemo = model.IsDemo ?? result.IsDemo; result.Enabled = model.Enabled ?? result.Enabled; result.Type = (byte?)model.Type ?? result.Type; result.WorkstationsCount = model.Type == LicenseTypeEnum.PerUser ? 1 : model.ComputerCount; if (model.UserId != result.LicenseOwner.Id) { result.LicenseOwner = db.LicenseOwners.First(x => x.Id == model.UserId); } #region Modules if (model.Modules != null) { var modulesIds = model.Modules.Select(x => (short)x) .ToList(); foreach (var moduleId in modulesIds) { if (result.LicenseModules.FirstOrDefault(x => x.ModuleId == moduleId) == null) { result.LicenseModules.Add(new LicenseModule() { ModuleId = moduleId, ValidTo = result.ValidTo }); } } var modulesForRemoval = new List <LicenseModule>(); foreach (var module in result.LicenseModules) { if (!modulesIds.Contains(module.ModuleId)) { modulesForRemoval.Add(module); } } foreach (var module in modulesForRemoval) { db.LicenseModules.Remove(module); } } #endregion db.SaveChanges(); LogLicenseChange(db, result.IsDemo, beforeUpdate, Serialize(result), result.Id, userId); return(true); } } return(false); }