Example #1
0
        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)));
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }