public async Task <List <SearchedPlan> > Handle(ConfirmPlanCommand request, CancellationToken cancellationToken) { List <SearchedPlan> result = new List <SearchedPlan>(); if (request.Id != default(int)) { using (_context) { OrganoGram toUpdateRecord = await(from org in _context.OrganoGram where org.Id == request.Id select org).SingleOrDefaultAsync(); toUpdateRecord.StatusId = request.StatusId; await _context.SaveChangesAsync(cancellationToken); result = await _mediator.Send(new Queries.SearchPlanQuery() { Id = toUpdateRecord.Id }); } } return(result); }
public async Task <List <SearchedPlan> > Handle(SavePlanCommand request, CancellationToken cancellationToken) { List <SearchedPlan> result = new List <SearchedPlan>(); if (request.Id == default(decimal)) { int CurrentUserId = await _currentUser.GetUserId(); using (var transaction = _context.Database.BeginTransaction()) { try { List <OrganoGram> List = _context.OrganoGram.Where(o => o.OrganizationId == request.OrganizationId && o.Year == request.Year).ToList(); if (List.Any()) { throw new BusinessRulesException("اداره در سال انتخاب شده تشکیل دارد"); } else { OrganoGram organogram = new OrganoGram() { OrganizationId = request.OrganizationId, IsPositionsCopied = request.IsPositionsCopied, StatusId = request.StatusId, Year = request.Year, NumberOfPositions = request.NumberOfPositions }; _context.OrganoGram.Add(organogram); await _context.SaveChangesAsync(CurrentUserId, cancellationToken); if (request.IsPositionsCopied == 1) { OrganoGram orglast = (from a in _context.OrganoGram where a.Year == (request.Year - 1) && a.OrganizationId == request.OrganizationId select a).SingleOrDefault(); List <Position> list = _context.Position.Where(c => c.OrganoGramId == orglast.Id && c.ParentId == null).ToList(); if (list.Any()) { await CopyPositionsAsync(list.FirstOrDefault(), organogram.Id, null); } } else { List <Organization> org = await _mediator.Send(new GetOrganiztionQuery() { Id = organogram.OrganizationId }); List <SearchedOrgPosition> orgp = await _mediator.Send(new SearchOrgPositionQuery() { Id = org.FirstOrDefault().OrgUnitTypeId, Children = false }); List <WorkArea> walist = (from a in _context.WorkArea where a.Title.Trim().Equals(org.FirstOrDefault().Dari.Trim()) select a).ToList(); if (!walist.Any()) { WorkArea a = new WorkArea(); a.Title = org.FirstOrDefault().Dari.Trim(); await _context.SaveChangesAsync(CurrentUserId, cancellationToken); walist = (from b in _context.WorkArea where b.Title.Trim().Equals(org.FirstOrDefault().Dari.Trim()) select b).ToList(); } List <SearchedPosition> positionresults = await _mediator.Send(new SavePositionCommand() { WorkingAreaId = Convert.ToInt32(walist.FirstOrDefault().Id), PositionTypeId = orgp.FirstOrDefault().Id, LocationId = 1, SalaryTypeId = 1, OrganoGramId = organogram.Id, Code = org.FirstOrDefault().Id.ToString() + "0000" + 1.ToString(), PlanTypeId = 1 }); } result = await _mediator.Send(new Queries.SearchPlanQuery() { Id = organogram.Id }); } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw new Exception(); } } } else { OrganoGram toUpdateRecord = await(from org in _context.OrganoGram where org.Id == request.Id select org).SingleOrDefaultAsync(); toUpdateRecord.OrganizationId = request.OrganizationId; toUpdateRecord.StatusId = request.StatusId; toUpdateRecord.Year = request.Year; toUpdateRecord.NumberOfPositions = request.NumberOfPositions; await _context.SaveChangesAsync(cancellationToken); result = await _mediator.Send(new Queries.SearchPlanQuery() { Id = toUpdateRecord.Id }); } return(result); }