/// <summary>
        /// Update an entity.
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public CostCenterViewModel Update(CostCenterViewModel model)
        {
            this.ThrowExceptionIfExist(model);

            var entity = model.ToEntity();

            entity = this._CostCentersRepository.Update(entity);

            ConditionFilter <CostCenter, long> conditionFilter = new ConditionFilter <CostCenter, long>()
            {
                Query = (x =>
                         x.ParentKeyCostCenterId == entity.Id)
            };
            var childs = this._CostCentersRepository.Get(conditionFilter);

            if (childs.Count() > 0)
            {
                var ar = childs.FirstOrDefault(x => x.Language == Language.Arabic);
                ar.Name        = model.NameAr;
                ar.Description = model.DescriptionAr;
                this._CostCentersRepository.Update(ar);

                var en = childs.FirstOrDefault(x => x.Language == Language.English);
                en.Name        = model.NameEn;
                en.Description = model.DescriptionEn;
                this._CostCentersRepository.Update(en);
            }

            #region Commit Changes
            this._unitOfWork.Commit();
            #endregion

            model = entity.ToModel();
            return(model);
        }
        /// <summary>
        /// Delete an entity.
        /// </summary>
        /// <param name="model"></param>
        public void Delete(CostCenterViewModel model)
        {
            var entity = model.ToEntity();

            this._CostCentersRepository.Delete(entity);

            #region Commit Changes
            this._unitOfWork.Commit();
            #endregion
        }
        /// <summary>
        /// Throw an exception if name is exist.
        /// </summary>
        /// <param name="model">CostCenter view model</param>
        public void ThrowExceptionIfExist(CostCenterViewModel model)
        {
            ConditionFilter <CostCenter, long> condition = new ConditionFilter <CostCenter, long>
            {
                Query = (entity =>
                         entity.Code == model.Code &&
                         entity.Id != model.Id)
            };
            var existEntity = this._CostCentersRepository.Get(condition).FirstOrDefault();

            if (existEntity != null)
            {
                throw new ItemAlreadyExistException((int)ErrorCodeEnum.CodeAlreadyExist);
            }
        }
        public IActionResult AddCostCenter(CostCenterViewModel model)
        {
            if (model.LocationId == 0)
            {
                var locationList = _farm.GetLocationList(null);
                ViewBag.LocationList = locationList;

                _toastNotification.AddErrorToastMessage("Need to select a Location", new ToastrOptions
                {
                    PositionClass = ToastPositions.TopCenter
                });
                return(View(model));
            }

            var farm = _farm.AddCostCenter(model, GetCurrentUserAsync().Result.UserName).Result;

            if (ModelState.IsValid)
            {
                if (farm.Succeeded)
                {
                    _toastNotification.AddSuccessToastMessage(farm.OkMessage, new ToastrOptions
                    {
                        PositionClass = ToastPositions.TopCenter
                    });
                    return(RedirectToAction(nameof(ListCostCenter)));
                }

                _toastNotification.AddWarningToastMessage(farm.Errors, new ToastrOptions
                {
                    PositionClass = ToastPositions.TopCenter
                });
                var locationList = _farm.GetLocationList(null);
                ViewBag.LocationList = locationList;
                return(View(nameof(AddCostCenter), model));
            }
            else
            {
                var locationList = _farm.GetLocationList(null);
                ViewBag.LocationList = locationList;
                return(View(nameof(AddCostCenter), model));
            }
        }
        /// <summary>
        /// Add an entity.
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public CostCenterViewModel Add(CostCenterViewModel model)
        {
            this.ThrowExceptionIfExist(model);

            var entity = model.ToEntity();

            entity = this._CostCentersRepository.Add(entity);

            var entityAr = new CostCenter
            {
                Id          = entity.Id,
                Name        = model.NameAr,
                Description = model.DescriptionAr,
                Language    = Language.Arabic
            };

            entity.ChildTranslatedCostCenters.Add(entityAr);
            this._CostCentersRepository.Add(entityAr);

            var entityEn = new CostCenter
            {
                Id          = entity.Id,
                Name        = model.NameEn,
                Description = model.DescriptionEn,
                Language    = Language.English
            };

            entity.ChildTranslatedCostCenters.Add(entityEn);
            this._CostCentersRepository.Add(entityEn);

            #region Commit Changes
            this._unitOfWork.Commit();
            #endregion

            model = entity.ToModel();
            return(model);
        }
示例#6
0
        public void OnGet(int costCenterID, int locationId)
        {
            Input        = new CostCenterViewModel();
            CostCenterId = costCenterID;
            LocationId   = locationId;

            CanEdit = User.Claims.FirstOrDefault(x => x.Type == "type")?.Value == "authorizer" ||
                      User.Claims.FirstOrDefault(x => x.Type == "type")?.Value == "superuser";

            //////////////////////
            Account = _ctx.AccountUsers
                      //.Include(x => x.Account)
                      //    .ThenInclude(x => x.Locations)
                      //    .ThenInclude(x => x.Address)
                      //.Include(x => x.Account)
                      //    .ThenInclude(x => x.Locations)
                      //    .ThenInclude(x => x.CostCenters)
                      //    .ThenInclude(x => x.CostCenterAuth)
                      .Include(x => x.Account)
                      .ThenInclude(x => x.AccountUsers)
                      .ThenInclude(x => x.User)
                      .FirstOrDefault(x => x.UserId == User.FindFirst(ClaimTypes.NameIdentifier).Value&& x.Active)
                      .Account;

            var costCenter = _ctx.CostCenters
                             .Include(c => c.CostCenterAuth)
                             .Include(c => c.Location)
                             .FirstOrDefault(c => c.Id == costCenterID);
            var costCenterUsers = new List <CostCenterAuth>();

            if (costCenter != null)
            {
                CostCenter = new CostCenterViewModel()
                {
                    Id           = costCenterID,
                    Name         = costCenter.Name,
                    LocationId   = costCenter.LocationId,
                    Location     = costCenter.Location.Name,
                    AuthorizerId = costCenter.AuthorizerId,
                    //UserId = costCenter.UserId,
                };

                costCenterUsers = costCenter.CostCenterAuth.ToList();
            }
            else
            {
                CostCenter = new CostCenterViewModel();
            }

            Users       = Account.AccountUsers.Where(x => x.User.Type == Domain.Enums.UserType.BusinessUser).Select(x => x.User).OrderBy(s => s.FirstName).ToList();
            Authorizers = Account
                          .AccountUsers
                          .Where(x => x.User.Type == Domain.Enums.UserType.Authorizer)
                          .Select(u => new UserViewModel()
            {
                Id      = u.User.Id,
                Email   = u.User.Email,
                Name    = u.User.FirstName,
                Surname = u.User.LastName
            })
                          .OrderBy(u => u.Name)
                          .ToList();

            foreach (var item in Users)
            {
                Input.Users.Add(new UserViewModel()
                {
                    Id        = item.Id,
                    Email     = item.Email,
                    Name      = item.FirstName,
                    Surname   = item.LastName,
                    IsChecked = costCenterUsers.Any(ca => ca.Userid == item.Id)
                });
            }
        }