public async Task <ActionResult> Edit(PartnersEditViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Json(ModelState.ToDictionary()));
            }

            var partnerEdited = await _partnersManager.EditAsync(model, User.Identity.GetUserId());

            return(Json(partnerEdited));
        }
Beispiel #2
0
        public async Task <PartnersListViewModel> EditAsync(PartnersEditViewModel model, string agentId)
        {
            if (string.IsNullOrEmpty(agentId))
            {
                throw new ArgumentException("Не е намерен брокерът, който редактира информацията за Партньор!");
            }

            if (!await IsAdminOrAgent(agentId))
            {
                throw new NotAuthorizedUserException("Потребителят няма право на това действие! Само админи и брокери имат право да редактират информацията за Партньори !");
            }

            if (dbContext.Partners.Any(p => p.PhoneNumber == model.PhoneNumber && p.Id != model.Id))
            {
                throw new ArgumentException("Съществува партньор с този телефонен номер!");
            }

            var colleagueToEdit = await dbContext.Partners
                                  .FirstOrDefaultAsync(c => c.Id == model.Id)
                                  ?? throw new ContentNotFoundException("Не е намеренa информацията за партньорът, който искате да редактирате.");

            if (colleagueToEdit.AgentIdCreator != agentId && !await IsUserAdministrator(agentId))
            {
                throw new NotAuthorizedUserException("Нямате право да редактирате Партньор добавен от друг Агент!");
            }

            if (!await IsPartnerTypeExisting(model.PartnerTypeId))
            {
                throw new ContentNotFoundException("Не съществува типът Партньор, който сте избрали!");
            }

            dbContext.Partners.Attach(colleagueToEdit);
            colleagueToEdit.PartnerCompanyName = model.PartnerCompanyName;
            colleagueToEdit.PartnerName        = model.PartnerName;
            colleagueToEdit.PhoneNumber        = model.PhoneNumber;
            colleagueToEdit.Email                 = model.Email;
            colleagueToEdit.CityId                = model.CityId;
            colleagueToEdit.SocialMediaAccount    = model.SocialMediaAccount;
            colleagueToEdit.AdditionalInformation = model.AdditionalInformation;
            colleagueToEdit.PartnerTypeId         = model.PartnerTypeId;
            await dbContext.SaveChangesAsync();

            return(await Get(agentId, model.Id));
        }